【发布时间】:2013-02-06 10:41:12
【问题描述】:
我有一张简单的桌子 ->
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
by_id INT UNSIGNED NOT NULL
posted_on INT UNSIGNED NOT NULL
我的表引擎是MyISAM。
我在by_id,posted_on,id 上有一个名为combo1 的多列索引
我运行这个查询 ->
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。
即使 QEP 显示优化器正在使用索引 combo1,其中包含“id”索引,为什么在第二种情况下会出现 filesort。
【问题讨论】: