2012-05-10 4 views
9

MySQLに格納されている値が常に正確に32文字になることがわかっている場合はVARCHARの代わりにCHARの列型を作成する方が良いでしょうか? VARCHARとCHARを使用する場合のパフォーマンスの違いは何ですか?固定長文字列のMYSQL VARCHARまたはCHAR

ありがとうございました。

+0

関連http://stackoverflow.com/a/34802591/934739 –

答えて

7

私はCHARを使用します。

CHARで検索する可能性がある場合は、VARCHARを上回る小さなパフォーマンスのアップグレードを示します。

データサイズが固定されるため、VARCHARにはプレフィックスとして1〜2バイトのいずれかが格納されるため、CHARを使用することには欠点はありません。

参考:MySQL CHAR vs VARCHAR

3

VARCHAR列use a one or two byte prefix to store the lengthは:

CHARとは対照的に、VARCHAR値は、1バイトまたは2バイトの長さの接頭辞を加えたデータとして格納されます。長さ接頭部は、値のバイト数を示します。値が255バイトを超えない場合は1つの長さのバイトが使用され、値が255バイトを超える場合は2つの長さのバイトが使用されます。

したがって、VARCHAR列は非常にわずかに大きくなります。常に正確に32文字になることが分かっているなら、CHARは妥当であると思われます。あなたが長さを完全に確信していない場合は、VARCHARを使用します。

7

あなたの最初の質問への答え、「?それは代わりにVARCHARの列型CHARを作るために、より良い性能である」...はいあります。絶対に。

長さが32になることがわかっている場合は、間違いなくCHARを使用する必要があります。

いくつかの良い答えもここに与えられた: Why would I ever pick CHAR over VARCHAR in SQL?

0

文字列は常に32文字(おそらくあなたはMD5ハッシュを抱えている)、その後のCharのために行く(32) になります場合は必ずこのスクリプトを実行することができますmysqlが何を言わなければならないかを確認してください。

SELECT * FROM table PROCEDURE ANALYSE(); 

これはあなたの行全体を分析し、いくつかの提案をします。テーブルに適切な数の行がある場合にのみうまく動作します。

関連する問題