JZ.*_*JZ. 6 mysql sql indexing filesort
MySQL似乎没有使用索引,并在以下查询中使用filesort:
SELECT `tweets`.*
FROM `tweets`
WHERE (`tweets`.contest_id = 159)
ORDER BY tweet_id ASC, tweeted_at DESC LIMIT 100 OFFSET 0
Run Code Online (Sandbox Code Playgroud)
我有关于contest_id,tweet_id和tweeted_at的索引
当我执行时EXPLAIN EXTENDED,Extra返回"使用where;使用filesort".如何改进查询?
混合ASC和DESC排序时,MySQL无法使用索引来优化GROUP BY语句.
此外,使用多个键进行排序将导致无法使用索引优化查询.
来自文档:
http://dev.mysql.com/doc/refman/5.6/en/order-by-optimization.html
在某些情况下,MySQL不能使用索引来解析ORDER BY,尽管它仍然使用索引来查找与WHERE子句匹配的行.这些案例包括以下内容:
您在不同的键上使用ORDER BY:
SELECT*FROM t1 ORDER BY key1,key2;
...
你混合ASC和DESC:
SELECT*FROM t1 ORDER BY key_part1 DESC,key_part2 ASC;
如果您订购的两列不属于同一个键,那么您正在执行上述两项操作.