2012-03-21 8 views
1

私は常に5桁の値を格納する列を持っています(例:10100,60200,30100など)。私は、データ型を使用するのが良い(char(5)かvarchar(5)かsmallInt)か混乱しています。私はsmallintが2バイトしか取らないことを理解しているので、char(5)とvarchar(5)のバイト数は何バイトですか?私のシナリオでは、パフォーマンスとストレージの両方で、どのデータタイプが良いでしょうか?Mysqlのcharとvarcharとintのストレージ

+0

[ 'CHAR'と' VARCHAR'タイプ](https://dev.mysql.com/doc/refman/5.7/en/char.html)。 –

+0

[varcharとして番号を格納する](https://stackoverflow.com/questions/3008371/storing-numbers-as-varchar) – Martin

答えて

1

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文字未満であることがわかっている場合、charvarchar以上使用することをお勧めします。

0

まず、5桁のコードの種類が何であるかによって異なります。その数字がmediumintを選択するよりも、文字列がcharを選択するよりも、将来の操作のために簡単に操作できます。テーブルのサイズも考慮してください

0

「ストレージはディスク上にあります」とは言わず、コンピュータにディスクからファイルを取得するように依頼する人はいません...まあ、数千バイト/ 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への関係があります。

トゥート、警笛...

+0

という奇妙なものがありますが、それは本当に質問に答えるだけではなく、あいまいな話題。あなたはあなたの声明で様々な間違いを犯し、この回答を大きく編集するためにうまくいくでしょう。同様に参照を提供する。乾杯。 – Martin

関連する問題