MySQLに格納されている値が常に正確に32文字になることがわかっている場合はVARCHAR
の代わりにCHAR
の列型を作成する方が良いでしょうか? VARCHARとCHARを使用する場合のパフォーマンスの違いは何ですか?固定長文字列のMYSQL VARCHARまたはCHAR
ありがとうございました。
MySQLに格納されている値が常に正確に32文字になることがわかっている場合はVARCHAR
の代わりにCHAR
の列型を作成する方が良いでしょうか? VARCHARとCHARを使用する場合のパフォーマンスの違いは何ですか?固定長文字列のMYSQL VARCHARまたはCHAR
ありがとうございました。
CHAR
を使用します。CHAR
で検索する可能性がある場合は、VARCHAR
を上回る小さなパフォーマンスのアップグレードを示します。
データサイズが固定されるため、VARCHAR
にはプレフィックスとして1〜2バイトのいずれかが格納されるため、CHAR
を使用することには欠点はありません。
VARCHAR列use a one or two byte prefix to store the lengthは:
CHARとは対照的に、VARCHAR値は、1バイトまたは2バイトの長さの接頭辞を加えたデータとして格納されます。長さ接頭部は、値のバイト数を示します。値が255バイトを超えない場合は1つの長さのバイトが使用され、値が255バイトを超える場合は2つの長さのバイトが使用されます。
したがって、VARCHAR列は非常にわずかに大きくなります。常に正確に32文字になることが分かっているなら、CHARは妥当であると思われます。あなたが長さを完全に確信していない場合は、VARCHARを使用します。
あなたの最初の質問への答え、「?それは代わりにVARCHARの列型CHARを作るために、より良い性能である」...はいあります。絶対に。
長さが32になることがわかっている場合は、間違いなくCHARを使用する必要があります。
いくつかの良い答えもここに与えられた: Why would I ever pick CHAR over VARCHAR in SQL?
文字列は常に32文字(おそらくあなたはMD5ハッシュを抱えている)、その後のCharのために行く(32) になります場合は必ずこのスクリプトを実行することができますmysqlが何を言わなければならないかを確認してください。
SELECT * FROM table PROCEDURE ANALYSE();
これはあなたの行全体を分析し、いくつかの提案をします。テーブルに適切な数の行がある場合にのみうまく動作します。
関連http://stackoverflow.com/a/34802591/934739 –