私は常に5桁の値を格納する列を持っています(例:10100,60200,30100など)。私は、データ型を使用するのが良い(char(5)かvarchar(5)かsmallInt)か混乱しています。私はsmallintが2バイトしか取らないことを理解しているので、char(5)とvarchar(5)のバイト数は何バイトですか?私のシナリオでは、パフォーマンスとストレージの両方で、どのデータタイプが良いでしょうか?Mysqlのcharとvarcharとintのストレージ
答えて
2バイトのデータ=符号なしの場合は0〜65,535、符号付きの場合は-32,768〜32,767の数字。 (符号なし=非負の値、歌う=負の値から正の値)。媒体INTを使用
http://dev.mysql.com/doc/refman/4.1/en/integer-types.html
任意の5桁の数字の受け入れ値を保証する(0符号なし16,777,215に、8,388,607の-8388608は、署名された)、それが対のデータのみ3バイトrequriesので、私は、使用を示唆しているものです5のvarchar/charです。文字を使用する必要があり、5文字以上5文字未満であることがわかっている場合、char
をvarchar
以上使用することをお勧めします。
まず、5桁のコードの種類が何であるかによって異なります。その数字がmediumint
を選択するよりも、文字列がchar
を選択するよりも、将来の操作のために簡単に操作できます。テーブルのサイズも考慮してください
「ストレージはディスク上にあります」とは言わず、コンピュータにディスクからファイルを取得するように依頼する人はいません...まあ、数千バイト/ CPUは十億で実行されます。 /秒です...この負荷(コンピュータに記録を依頼する)は、あなたの太った仲間に、安価な食品[Slurpee]のローカルショップに行くように頼むのと似ています。
「はい、私は戻ってくるまで何もしないでください。
誰も、varcharがint、charstringであるとは言及していません。だからvarchar(3)は7バイトではなく3です。
私は5000エントリしか持っていないでしょう。
そして、私は1260億を持つつもりです。
ええ、ディスク容量は安いですが、データを保存または返すようにディスクを要求することはありません。ディスクの書き込み/読み取りは通常2kまたは4kブロックです。あなたのテーブルが10列に近づいていて、あなたのデザインをやり直して考える必要があったなら、最初のルールは私に(ゲームスクールで)叩かれました。
実話 - CUST-テーブル:
id, fname, lname, sex, dob, address X5(street,city,zip,country), phone X5(with notes), comments and a couple of others.
サイズ:2488バイト。
レコードを返すために2つのディスクフェッチが必要です - 一度に2つのスラッピーを取得してください。
また、INTのDBを検索することは、CHARを検索するよりもずっと面白いことです。 IEがvarchar(48)のように電話番号を格納していて、番号が(719)1233-4567または7191234567または719.123.4567または '719 1234567 sisters phone'のように入力されたときに検索を実行します。誰かが私に良い質問を書いてください。 INTs、ENUMsなど
テーブルの長さが100バイトでコンピュータが4kレコードを使用している場合、80%の顧客ではなくスラーピーごとに40人の顧客を獲得できます。それは「リレーショナル」DBです。つまり、cust.nameテーブルには、cust.phoneへの関係、cust.addressへの関係、cust.commentsへの関係があります。
トゥート、警笛...
という奇妙なものがありますが、それは本当に質問に答えるだけではなく、あいまいな話題。あなたはあなたの声明で様々な間違いを犯し、この回答を大きく編集するためにうまくいくでしょう。同様に参照を提供する。乾杯。 – Martin
- 1. VarcharとcharのSQLサーバー
- 2. (int型、char型**)とint型のmain(int型のargc、char型** ARGV)
- 3. Intと* Char-C++の配列
- 4. MySQL varcharとIBM DB2 varchar dataypeの比較
- 5. MySQLのプライマリキーとVARCHAR(255)
- 6. MySQLのケースEnumInt BLOBとして返すVarchar ELSE Int - Varcharとしてキャストするには?
- 7. Teradata - varcharとcharを結合する
- 8. VARCHARとCHARとの間にSQL Serverのヌルの比較
- 9. Python BeautifulSoup MySQLのストレージとインタラクション
- 10. OCamlとintのcharリストのペア
- 11. intとcharの文字列 - C
- 12. ポインタと配列[intポインタとcharポインタ]
- 13. MySQLはvarcharをcharに変換するのは何ですか?
- 14. 固定長文字列のMYSQL VARCHARまたはCHAR
- 15. integerとvarcharのMySQLの相違
- 16. Infinity、ActiveRecord、MySQL:ストレージと比較
- 17. MySQLで比較するとintにvarcharまたはvarcharに変換する方が速いですか?
- 18. varcharおよびint mysqlデータ型のデフォルト値
- 19. MySQLのvarcharインデックスストレージ
- 20. MySQLのVARCHARサイズ?
- 21. intをcharと比較する
- 22. SQL Server Char/VarChar DateTimeエラー
- 23. のIntとChar型Scalaの補間(ジェネリックと上限)
- 24. mysqlでvarbinaryをchar/varcharに変換する方法
- 25. "char * _EXFUN(index、(const char *、int));"の意味 "
- 26. エラー:ポインタと整数の比較( 'int'と 'string'(別名 'char *'))
- 27. なぜcin.get(char *、int、char t)およびcin.getline(char *、int、char t)ですか?
- 28. Signed Char to Int
- 29. C++ char * vs int *
- 30. C++ int to char
[ 'CHAR'と' VARCHAR'タイプ](https://dev.mysql.com/doc/refman/5.7/en/char.html)。 –
[varcharとして番号を格納する](https://stackoverflow.com/questions/3008371/storing-numbers-as-varchar) – Martin