1

このインデックスがある場合:

(col1、col2、col3)

(col1) を検索すると役立つことがわかっています。(col1、col2); (col1、col2、col3)。

まったく同じ列を持つ別のインデックスを作成すると、phpMyAdmin はそれらのインデックスの 1 つが削除される可能性があることを警告します。それらは同じであるためです。

ただし、これらのインデックスがある場合:

(col1、col2、col3)

(col1、col2)

(列1)

phpMyAdmin はまったく警告しません。

だから私の質問は、最後の2つのインデックスはいずれにせよ必要ですか? 最初のインデックスだけで十分だと思います

ありがとうございました。

4

1 に答える 1

3

MySQL は検索を最適化するために 1 つのインデックス (一番左) のみを使用します。ドキュメントからの引用:

"テーブルに複数列のインデックスがある場合、オプティマイザはインデックスの左端のプレフィックスを使用して行を検索できます。たとえば、(col1、col2、col3) に 3 列のインデックスがある場合、インデックスを作成しました(col1)、(col1、col2)、および (col1、col2、col3) の検索機能。

ただし、いずれかのインデックスが UNIQUE である場合は、おそらくそこに存在する正当な理由があります。

分析中に、いずれかの列が互いに離れて頻繁に使用されていることがわかった場合は、それらのクエリを最適化するために、それぞれに個別のインデックスを追加することを検討する必要があります。

例えば

ALTER TABLE tablename ADD INDEX (col1), ADD INDEX (col2), ADD INDEX (col3);
于 2012-08-16T21:06:12.003 に答える