UTF-8 カラムの MySQL varchar インデックス長について
MySQL では、varchar(n) カラムのインデックス長は次のように指定されます。バイトではなく文字です。ただし、MySQL は、各 UTF-8 文字が 3 バイトを占めると想定します。これは、指定されたインデックス長が n の varchar 列の場合、インデックスを作成できる実際の最大バイト数は 3n であることを意味します。
これを内訳すると、
UTF-8 列のインデックス サイズへの影響
1 文字あたり 3 バイトの仮定に基づく, MySQL では、UTF-8 文字を含む varchar カラムのインデックス サイズに実質的な制限が課されています。 set.
動的および圧縮行フォーマットに関する考慮事項
MySQL バージョン 8.0 以降では、最大インデックスを増やすことができる可能性があります。 DYNAMIC または COMPRESSED 行形式を使用した InnoDB テーブルの varchar 列のサイズ。これらの行形式では、より長いプレフィックス長が可能になり、事実上、インデックス サイズの制限が増加します。ただし、この最適化は、5.5.27 などの以前の MySQL バージョンではサポートされていません。
インデックス設計の推奨事項
UTF-8 を使用して varchar カラムのインデックスを設計する場合
以上がMySQL は UTF-8 カラムの VARCHAR インデックス長をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。