7.2.12. MySQL如何优化ORDER BY
2016-10-09 17:19
246 查看
即使ORDER BY不确切匹配索引,只要WHERE子句中的所有未使用的索引部分和所有额外的ORDER BY 列为常数,就可以使用索引。
下面的查询使用索引来解决ORDER BY部分:
SELECT * FROM t1 ORDER BY key_part1,key_part2,... ;
SELECT * FROM t1 WHERE key_part1=constant ORDER BY key_part2;
SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 DESC;
SELECT * FROM t1 WHERE key_part1=1 ORDER BY key_part1 DESC, key_part2 DESC;
在某些情况下,MySQL不能使用索引来解决ORDER BY,尽管它仍然使用索引来找到匹配WHERE子句的行。这些情况包括:
· 对不同的关键字使用ORDER BY:
· SELECT * FROM t1 ORDER BY key1, key2;
· 对关键字的非连续元素使用ORDER BY:
· SELECT * FROM t1 WHERE key2=constant ORDER BY key_part2;
· 混合ASC和DESC:
· SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;
· 用于查询行的关键字与ORDER BY中所使用的不相同:
· SELECT * FROM t1 WHERE key2=constant ORDER BY key1;
· 你正联接许多表,并且ORDER BY中的列并不是全部来自第1个用于搜索行的非常量表。(这是EXPLAIN输出中的没有const联接类型的第1个表)。
· 有不同的ORDER BY和GROUP BY表达式。
· 使用的表索引的类型不能按顺序保存行。例如,对于HEAP表的HASH索引情况即如此。
通过EXPLAIN 可以检查MySQL是否可以使用索引来解决查询。如果Extra列内有Using filesort,则不能解决查询。
相关文章推荐
- MySQL如何利用索引优化ORDER BY排序语句
- MySQL如何优化ORDER BY
- MySQL如何建索引以及利用索引优化ORDER BY排序语句
- MySQL如何利用索引优化ORDER BY排序语句
- MySQL如何利用索引优化ORDER BY排序语句 【转载】
- MySQL如何利用索引优化ORDER BY排序语句
- MySQL如何利用索引优化ORDER BY排序语句
- MySQL如何利用索引优化ORDER BY排序语句
- MySQL如何利用索引优化ORDER BY排序语句
- MySQL如何利用索引优化ORDER BY排序语句
- MySQL如何建索引以及利用索引优化ORDER BY排序语句
- MySQL如何利用索引优化ORDER BY排序语句
- MySQL如何利用索引优化ORDER BY排序语句
- MySQL 如何优化 ORDER BY
- MySQL如何利用索引优化ORDER BY排序语句
- MySQL如何利用索引优化ORDER BY排序语句
- MySQL如何利用索引优化ORDER BY排序语句
- MySQL如何利用索引优化ORDER BY排序语句
- MySQL如何利用索引优化ORDER BY排序语句
- MySQL如何利用索引优化ORDER BY排序语句