mysqlインデックスのkey_lenが「長すぎる」かどうかを判断するための一般的なパラメータは何ですか?
たとえば、VARCHAR列が長い場合、キーを持つ方が長くなります。あるケースでは、インデックスがありkey_len=767
ます。その場合、私は次のようなことをする必要があります:
ADD INDEX (title(50));
テーブルに多くの行が含まれている場合、および/または多くのSELECT ... ORDER BY
クエリを実行する場合、関連するフィールドにインデックスを設定すると、SELECT クエリが高速化されます。
ただし、インデックスも更新する必要があるため、これらのフィールドの挿入、書き込み、および更新が遅くなります。
テーブルのすべてのインデックスはディスク容量を使用します。ディスク容量が本当に不足している場合は、より小さな key_len を使用してください。ただし、クエリの実行は遅くなります。
列が 1 つしかなく、最初の 3 文字だけがインデックス付けされているテーブルを想像してみてください。テーブルには以下が含まれます
:
Timothée
Tim
Timothy
Timmo
SELECT * FROM `my_table` ORDER BY `name` ASC
このクエリはインデックスを使用しますが、そのコンテンツは部分的にインデックスが作成されているため、完全な並べ替えを行うには追加の処理が必要になり、実行に時間がかかります。
MySQL インデックスの長さは最大 1000 バイトです (InnoDB テーブルの場合は 767 バイト)。(リンク)
Innodb のドキュメントには次のように書か
れています。行の主キー値は、同じ行を指すすべてのセカンダリ インデックス レコードで複製されます。(セクション14.3.11「InnoDB テーブルとインデックス構造」を参照してください。) 主キーが長い場合は主キーとして AUTO_INCREMENT 列を作成するか、列全体ではなく長い VARCHAR 列のプレフィックスにインデックスを付けます。