回答:
VARCHAR
可変長です。
CHAR
固定長です。
コンテンツが固定サイズの場合、次の方法でパフォーマンスが向上します CHAR
ます。
詳細な説明は、CHARおよびVARCHARタイプのMySQLページを参照してください(コメントも必ずお読みください)。
Values in VARCHAR columns are variable-length strings. The length can be specified as a value from 0 to 255 before MySQL 5.0.3, and 0 to 65,535 in 5.0.3 and later versions.
CHARとVARCHAR
CHARは固定長サイズ変数に使用されます
使用されますVARCHARは使用されます。
例えば
Create table temp
(City CHAR(10),
Street VARCHAR(10));
Insert into temp
values('Pune','Oxford');
select length(city), length(street) from temp;
出力は
length(City) Length(street)
10 6
結論:可変長が可変の場合、記憶域を効率的に使用するには、CHARではなくVARCHARを使用する必要があります。
CHAR(x)
列しか持つことができ、正確に x
文字を。列は持つことができるまでの文字。VARCHAR(x)
x
MD5ハッシュは常に同じサイズになるため、おそらくを使用する必要がありますCHAR
。
ただし、最初にMD5を使用するべきではありません。既知の弱点があります。
代わりにSHA2を使用してください。
パスワードをハッシュする場合は、bcryptを使用する必要があります。
MySQLのVARCHARとCHARの違いは何ですか?
すでに回答がありましたが、OLTPシステムまたは頻繁に更新されるシステムでは、更新中に列の断片化CHAR
が発生する可能性があるため、可変サイズの列でも使用することを検討してVARCHAR
ください。
MD5ハッシュを保存しようとしています。
セキュリティが本当に重要な場合、MD5ハッシュは最良の選択ではありません。ただし、ハッシュ関数を使用する場合BINARY
は、代わりにタイプを検討してください(たとえば、MD5は16バイトのハッシュを生成するため、16 進数を表す32文字BINARY(16)
でCHAR(32)
はなく十分です。これにより、より多くのスペースが節約され、パフォーマンスが効果的になります。
入力された文字が宣言された長さより短い場合、Varcharは末尾のスペースを切り捨てますが、charはそうではありません。Charはスペースを埋め、常に宣言された長さになります。効率の面では、varcharは文字をトリミングしてより多くの調整ができるため、より優れています。ただし、charの正確な長さがわかっている場合、charはもう少し高速で実行されます。
CHARは固定長フィールドです。VARCHARは可変長フィールドです。名前などの非常に可変的な長さの文字列を格納する場合は、VARCHARを使用します。長さが常に同じ場合は、CHARを使用します。これは、サイズ効率がやや高く、わずかに高速であるためです。
High Performance MySQLの本によると:
VARCHARは可変長文字列を格納し、最も一般的な文字列データ型です。必要なスペースのみを使用するため(つまり、短い値を格納するために使用されるスペースが少ないため)、固定長タイプよりも少ないストレージスペースで済みます。例外は、ROW_FORMAT = FIXEDで作成されたMyISAMテーブルです。これは、各行に対してディスク上の固定量のスペースを使用するため、スペースを浪費する可能性があります。VARCHARは スペースを節約するため、パフォーマンスに役立ちます。
CHARは固定長です。MySQLは常に、指定された文字数に対して十分なスペースを割り当てます。CHAR値を保存する場合、MySQLは末尾のスペースを削除します。(これは、MySQL 4.1以前のバージョンのVARCHARにも当てはまります。CHARとVAR CHARは論理的に同一であり、格納形式のみが異なります。)比較のために、必要に応じて値にスペースが埋め込まれます。
VARCHAR
必要に応じて動的にメモリを割り当てる必要があるため、とは対照的にパフォーマンスが低下しCHAR
ます。
Charまたはvarchar-大括弧で長さを示すことができるテキストデータを入力するために使用されます。例:char(20)
(
、)
かっこではなく、かっこです。
(
と)
、ブラケット、および多くの英国人は、おそらく言葉「かっこ」は句読点を参照することが可能な英語の方言があることに気付いていません。「括弧」よりも「括弧」を好む場合には強いケースがあります。これは、おそらく、国際的なプログラマーを対象とする場合の最も明確なオプションです。