11

MySQLに格納されている値が常に正確に32文字になることがわかっている場合、列タイプを作成するCHAR代わりに列タイプを作成する方がパフォーマンスが向上しVARCHARますか?VARCHARとCHARを使用した場合のパフォーマンスの違いは正確には何ですか?

ありがとう。

4

4 に答える 4

8

私は使用しますCHAR

列を検索する可能性が高い場合は、CHARを超えるパフォーマンスのわずかなアップグレードを示しますVARCHAR

データサイズは固定されるためCHARVARCHAR同等のものはプレフィックスとして1〜2バイトを格納するため、を使用することにマイナス面はありません。

参照:MySQLCHARとVARCHAR

于 2012-05-10T01:03:23.707 に答える
7

最初の質問に対する答えは、「列タイプをVARCHARではなくCHARにする方がパフォーマンスが良いですか?」...は「はい」です。間違いなく。

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

ここでもいくつかの良い答えが示され ています。SQLでVARCHARではなくCHARを選択するのはなぜですか。

于 2012-05-10T01:05:01.657 に答える
3

VARCHAR列は、1バイトまたは2バイトのプレフィックスを使用して長さを格納します

CHARとは対照的に、VARCHAR値は1バイトまたは2バイトの長さのプレフィックスとデータとして格納されます。長さプレフィックスは、値のバイト数を示します。値に必要な長さが255バイト以下の場合、列は1つの長さバイトを使用し、値に必要な長さが255バイトを超える場合は2つの長さバイトを使用します。

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

于 2012-05-10T00:59:58.037 に答える
0

文字列が常に32文字になる場合(おそらくmd5ハッシュを使用している場合)、Char(32)に移動します。このスクリプトを任意のテーブルに対していつでも実行して、mysqlの内容を確認できます。

SELECT * FROM table PROCEDURE ANALYSE();

これにより、行全体が分析され、いくつかの提案が得られます。テーブルに適切な数または行がある場合にのみうまく機能します。

于 2015-09-04T00:29:23.583 に答える