私は、MySQL 5.6 がa (または他のテキストベースの型)の最初の 767 バイトのみをインデックス化できることを読んでいます。varchar
私のスキーマ文字セットはutf-8
であるため、各文字は最大 3 バイトに格納できます。767/3 = 255.66 であるため、これは、インデックスを作成する必要があるテキスト列の最大長が 255 文字であることを示しています。次のように、経験はこれを確認しているようです。
create table gaga (
val varchar(255),
index(val)
) engine = InnoDB;
ただし、の定義をval
に変更するvarchar(256)
と、「エラー コード: 1071。指定されたキーが長すぎます。キーの最大長は 767 バイトです」というメッセージが表示されます。
この時代では、255 文字という制限は非常に低いように思われますが、これは正しいですか? それがMySQLで索引付けされたより大きなテキストを取得する最良の方法は何ですか? (避けるべきですか? SHA を保存しますか? 別の種類のインデックスを使用しますか? 別のデータベース文字エンコーディングを使用しますか?)