MySQL VARCHAR インデックスが UTF8 で 255 文字に制限されているのはなぜですか?

Linda Hamilton
リリース: 2024-11-20 15:46:16
オリジナル
917 人が閲覧しました

Why Are MySQL VARCHAR Indexes Limited to 255 Characters in UTF8?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート