2011-07-25 17 views
9

私はDBを最適化しており、固定長データ型についてはわかりません。MySQLの固定長データ型と可変長データ型

私の知る限り、これらのデータタイプは固定長知っているとおり

  • CHAR(N)
  • DATE
  • TIME
  • DATETIME
  • TINYINT
  • SMALLINT
  • MEDIUMINT
  • INT
  • FLOAT
  • DOUBLE

そして、これらは可変長

  • TEXT
  • VARCHAR
  • BLOB

私が間違っている場合は、私を修正してください!

私の質問は次のとおりです。これらのデータ型は固定長か可変長ですか。

  • TIMESTAMP
  • ENUM

感謝。

+0

これに答える公式ドキュメントにページを発見...より良い私の質問を理解するための更新は非常に広範な問題 –

+0

です。実際には、固定長データ型について私が知っているものが正しいかどうかを知りたいだけです。また、TIMESTAMP、ENUMは固定長または可変長のデータ型ですか? (合計2つの質問) –

+0

タイムスタンプと列挙型は固定長タイプです。 – Karolis

答えて

10

一部のデータ型では正しくありません。

DATETIME/TIMESTAMP

TIMESTAMPDATETIMEDATETIMEと比較した場合しかしTIMESTAMPは半分だけ記憶空間を使用し、類似しています。しかし、TIMESTAMPを使うことには顕著な欠点があるので、公式の文書を調べて必要なものがどれかを調べるべきです。しかし、DATETIMEのほとんどがより良い選択になります。

あなたはこのデータ型の修正/可変長

NUMBERS

あなたは長さ、すなわちint(20)を設定することにより、整数保存することができますが、保管の面で、それはノーを持って心配する必要はありません違いは無く、意味がありません。

TINYINT SMALL INT MEDIUMINT BIGINT

これらのデータ型は、それぞれ8、16、24、32、及び記憶空間の64ビットを必要とします。それぞれの最大値と最小値が異なります。値が特定の数値を超えないことが分かっている場合は、スペースを節約してパフォーマンスを向上させるために、最小のintデータ型を選択する必要があります。数字の詳細については、公式ドキュメントを参照してください。

FLOATおよびDOUBLEはおおよその計算であり、精度を指定する必要はありません。精度を設定し、仕様を超えて値を挿入すると、値が仕様に丸められます。もう一度公式文書を参照してください。

VARCHAR

VARCHAR、あなたが期待するようには可変長ですが、覚えておいて、あなただけの5つの文字を必要とするとき、ディスク上に格納されたときに長さが可変であるがために、VARCHAR(100)のようなものを指定しませんRAMで作業するときに指定する長さが必要なため、貴重なメモリを無駄にしてしまいます。

BLOBとTEXT

BLOBTEXTは、使用するストレージエンジンによっては、特別な方法で保存されます。それらは通常、「外部」領域に格納されます。文字列がVERYの場合は、使用しないでください。このデータ型は、全長を索引付けすることはできず、メモリーによってもサポートされていないため、システムのメモリーでは使用されません。これを呼び出すと、MyISAMストレージエンジンを使用してディスク上に一時テーブルが作成され、パフォーマンスが大幅に低下します。

ENUM

これは非常にコンパクトであり、あなたがテーブルを作成するときは、フィールドに特定の値を設定します。文字列は固定されており、ENUM列を変更するにはALTER TABLEが必要です。したがって、修正/可変長を心配する必要はありません。

EDIT:

私はすべてのあなたの質問にData Type Storage Requirements

+0

私が間違っているところは分かりません。私はあなたが話していることを理解するために公式文書を読みましたが(公式文書と同じですが)、私の質問に対する直接的な答えではありません。あなたが私のことを誤解している場合は** fixed-lenth **は** static **を指し、** variable-length **は** dynamic **を指します。とにかくありがとうございました! –

+0

固定記憶容量という意味では、大文字と小文字の区別があります。 'FLOAT'は値が0〜24桁の場合は4バイト、25〜53桁の場合は8バイトを格納します。 'TIME DATE DATETIME TIMESTAMP'もすべて一定量の記憶領域を占有しています。 BLOBとTEXTの欠点を覚えておいてください。 –

+0

には、あなたに役立つリンクが追加されました –

関連する問題