三 优化
经由过程膳绫擎的道理分析,我们知道排序的本质是经由过程必定的算法 (消费 cpu 运算, 内存, 临时文件 IO) 将结不雅集变成有序的结不雅集。若何优化呢?谜底是分两个方面应用索引的有序性 (MySQL 的 B+ 树索引是默认大年夜小到大年夜递增排序) 削减排序, 最好的方法是直接不排序。
- 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;
- SELECT * FROM t1 WHERE key_part1 > constant ORDER BY key_part1 ASC;
- SELECT * FROM t1 WHERE key_part1 < constant ORDER BY key_part1 DESC;
- SELECT * FROM t1 WHERE key_part1 = constant1 AND key_part2 > constant2 ORDER BY key_part2
温馨提示 ,各位看官要辩证的对待官方给的例子,本身多着手实践。
无法应用到索引排序的情况,其实我认为这是本文的重点,对于广大年夜开辟同窗而言,记住那种不克不及应用索引排序会更简单些。
1. 最常见的情况 用来查找结不雅的索引 (key2) 和 排序的索引 (key1) 不一样,where a=x and b=y order by id;
- SELECT * FROM t1 ORDER BY key1,key2;
3. 排序字段次序与索引中列次序不一致,无法应用索引排序,比如索引是 key idx_kp1_kp2(key_part1,key_part2)
- SELECT * FROM t1 ORDER BY key_part2, key_part1;
- SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;
5. ey_part1 是范围萌芽,key_part2 无法应用索引排序
4. order by 中的起落序和索引中的默认起落不一致,无法应用索引排序
- SELECT * FROM t1
推荐阅读
沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 简介:比来在重构app,原app用的是xcode自带的启动图设置。但相对来说自定义启动图可扩大性更强一点,今天花>>>详细阅读
本文标题:MySQL order by原理以及优化?这篇来给你逐步解析
地址:http://www.17bianji.com/lsqh/38202.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示