1

mysqlインデックスのkey_lenが「長すぎる」かどうかを判断するための一般的なパラメータは何ですか?

たとえば、VARCHAR列が長い場合、キーを持つ方が長くなります。あるケースでは、インデックスがありkey_len=767ます。その場合、私は次のようなことをする必要があります:

ADD INDEX (title(50));
4

1 に答える 1

2

テーブルに多くの行が含まれている場合、および/または多くの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 列のプレフィックスにインデックスを付けます。

于 2012-07-30T00:40:54.683 に答える