0

T という名前のテーブルが 1 つあります。このテーブルには、x、y、z、w の 4 つの属性があります。

テーブルにデータをロードしました。次に、x にインデックスを作成し、y にも別のインデックスを作成しました。

さて、このクエリを送信すると:

select count(*) from T where x <= 10 and y <=100;

インデックス x とインデックス y が使用されると仮定します。

しかし、そうはなりません!

select ステートメントの前にコマンド EXPLAIN を使用すると、インデックス x と y が " possible_keys" として表示されますが、列 " key" の下に NULL があります。つまり、インデックスは使用されませんでした。

ここで、このクエリを送信すると:

select count(*) from T where x<=50;

次に、EXPLAIN コマンドが示すように、MySQL はインデックス x を使用します。

それで、条件のANDはインデックスの使用を妨げていますか、それとも私がここで間違ったことをしましたか?

よろしく!

4

2 に答える 2

1

x と y を一緒にインデックス化する必要があります。詳細はこちら: http://dev.mysql.com/doc/refman/5.5/en/multiple-column-indexes.html

このクエリを実行するだけです:

ALTER TABLE `your_table_name_here` 
ADD INDEX `IDX_COMB_XY` (`x` ASC, `y` ASC) ;

Explain を実行すると、IDX_COMB_XY が使用されることがわかります。

于 2013-10-30T05:00:33.283 に答える