VARCHAR
テーブルとインラインで保存されます。 VARCHAR
サイズが妥当な場合はより高速になりますが、そのトレードオフはデータとハードウェアによって異なります。実際のシナリオをデータでベンチマークする必要があります。
VARCHAR
に保存できる有効な最大バイト数 またはVARBINARY
列には、65,535バイト
の最大行サイズが適用されます 、これはすべての列で共有されます。
たとえば、 VARCHAR(255)
columnは、最大255文字の文字列を保持できます。列がlatin1文字セット(文字ごとに1バイト)を使用すると仮定すると、実際に必要なストレージは、文字列の長さ(L)に、文字列の長さを記録するための1バイトを加えたものです。文字列'abcd'
の場合 、 L
4
です ストレージ要件は5バイトです。同じ列が代わりにucs2
を使用するように宣言されている場合 2バイト文字セットの場合、ストレージ要件は10バイトです。「abcd」の長さは8バイトで、最大長が255(510バイト
> )。
より大きなデータの場合は、 TEXT
の使用を検討してください またはBLOB
。 TEXT
およびBLOB
NDB
では列の実装が異なります ストレージエンジン。TEXT
の各行 カラムは2つの別々の部分で構成されています。これらの1つは、固定サイズの(256バイト)
です。 、および実際には元のテーブルに格納されます。もう1つは、256バイト
を超えるデータで構成されます 、非表示のテーブルに保存されます。この2番目のテーブルの行は、常に2,000バイト
です。 長いです。これは、 TEXT
のサイズを意味します 列は256
です size <=256
の場合 (ここで、sizeは行のサイズを表します);それ以外の場合、サイズは 256 + size +(2000 –(size – 256)%2000)
。
http://dev.mysql.com/doc/refman /5.6/en/storage-requirements.html
クエリでそのフィールドをめったに使用しない場合は、データベースの関係によって異なります。たとえば、追加情報について。分離されたテーブルを作成することは良いオプションです(正規化)。
注: VARCHAR
CHAR
とは異なります 。 VARCHAR(250)
を作成する場合 20
だけを挿入します その上に文字があれば、5バイト
かかります + L
CHAR(250)
とは異なります 、250バイト
かかります + L
同じ条件で。