MySQL VARCHAR インデックスの長さ
問題:
MySQL では、プレフィックス付きの varchar カラム十分なインデックスがあるにもかかわらず、255 文字を超えるインデックスがデータの並べ替えに使用されないsize.
答え:
MySQL はインデックス計算で utf8 文字ごとに 3 バイトを想定します。 767 バイトのインデックス制限により、これは最大 255 文字に変換されます。
説明:
- MySQL インデックス サイズは、次の場合でもバイト単位で指定されます。 VARCHAR などの非バイナリ データ型。
- 列ごとの最大プレフィックス インデックス サイズは 767 です。 bytes.
- utf8 カラムの場合、MySQL は各文字が 3 バイトを占めると想定します。
- したがって、767 / 3 = 255 文字が utf8 カラムの最大インデックス長です。
追加考慮事項:
- セル値全体がインデックス付けされるため、utf8 列の一意の制約は 255 文字に制限されます。
- 通常のインデックスは 255 文字を超える列に適用できます。ただし、インデックス付けされるのは最初の 255 文字のみです。
- 列内のほとんどの文字が ASCII の場合(1 バイト文字)、255 文字を超える文字をインデックスに収めることは可能ですが、MySQL の計算ではこれが考慮されません。
- innodb_large_prefix オプションを有効にすると、インデックス制限を 3072 バイトに増やすことができます。 DYNAMIC または COMPRESSED 行形式を使用するテーブル。
以上がMySQL VARCHAR インデックスが UTF8 で 255 文字に制限されているのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。