繁体   English   中英

MySQL使用文件排序而不是索引

[英]mysql using filesort instead of index

我有这个查询:

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

我有索引:x,日期-Btree

如果我在两个值上都有索引,为什么此查询使用索引和文件排序。

x =整数日期=日期

高音类型= 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

从参考-

在某些情况下,MySQL无法使用索引来解析ORDER BY,尽管它仍然使用索引来查找与WHERE子句匹配的行。 这些情况包括:

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

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

该查询正在使用文件排序,因为它是范围查询。 如果查询使用精确方程式,则Filesort将消失。

但是您可能知道filesort实际上是一个错误的名称 ,实际上与文件没有任何关系。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM