私は簡単なテーブルを持っています->
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
by_id INT UNSIGNED NOT NULL
posted_on INT UNSIGNED NOT NULL
私のテーブルエンジンはMyISAMです。
複数の列のインデックスが必要combo1ですby_id,posted_on,id
このクエリを実行します->
EXPLAIN SELECT * FROM books
WHERE by_id = '1' AND posted_on = '0'
ORDER BY id DESC LIMIT 7;
Extraコラムは言うそしてUsing whereキーコラムは言うcombo1
しかし、私がこのクエリを実行すると->
EXPLAIN SELECT * FROM books
WHERE by_id IN(1,7,10) AND posted_on = '0'
ORDER BY id DESC LIMIT 7;
Extra列にはが表示さUsing where; Using filesortれ、キー列にはが表示されますcombo1。
filesortQEPは、オプティマイザが「id」インデックスが付けられたインデックスcombo1を使用していることを示しているのに、なぜ2番目のケースで発生するのですか。