mysql使用filesort而不是index

时间:2011-12-14 06:14:02

标签: mysql indexing

我有这个问题:

SELECT * FROM table WHERE x >= 500 AND x < 5000 ORDER BY date DESC LIMIT 0,50

我有索引:x,日期 - Btree

如果我对两个值都有索引,为什么这个查询使用索引和filesort。

x =整数 date = date

tyble type = myisam

解释

ID: 1
select_type: SIMPLE
table: d
type: range
possible_keys: sort
key: sort
key_len: 2
ref: null
rows: 198
extra: using index condition; using filesort

2 个答案:

答案 0 :(得分:3)

来自参考文献 -

  

在某些情况下,MySQL无法使用索引来解析ORDER BY,   虽然它仍然使用索引来查找与WHERE匹配的行   条款。这些案例包括以下内容:

     

用于获取行的密钥与使用的密钥不同   ORDER BY:SELECT * FROM t1 WHERE key2 = constant ORDER BY key1;

尝试添加索引INDEX(date,x)。

答案 1 :(得分:3)

查询正在使用filesort,因为它是范围查询。如果查询使用了精确的方程式,那么Filesort就会消失。

但您可能知道filesort is actualy a misname并且实际上与文件无关。