作家
登录

MySQL order by原理以及优化?这篇来给你逐步解析

作者: 来源: 2017-10-25 15:09:56 阅读 我要评论

三 优化

经由过程膳绫擎的道理分析,我们知道排序的本质是经由过程必定的算法 (消费 cpu 运算, 内存, 临时文件 IO) 将结不雅集变成有序的结不雅集。若何优化呢?谜底是分两个方面应用索引的有序性 (MySQL 的 B+ 树索引是默认大年夜小到大年夜递增排序) 削减排序, 最好的方法是直接不排序。

  1. SELECT * FROM t1 ORDER BY key_part1,key_part2,... ; 
  2. SELECT * FROM t1 WHERE key_part1 = constant ORDER BY key_part2; 
  3. SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 DESC
  4. SELECT * FROM t1 WHERE key_part1 = 1 ORDER BY key_part1 DESC, key_part2 DESC
  5. SELECT * FROM t1 WHERE key_part1 > constant ORDER BY key_part1 ASC
  6. SELECT * FROM t1 WHERE key_part1 < constant ORDER BY key_part1 DESC
  7. 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;

  1. SELECT * FROM t1 ORDER BY key1,key2; 

3. 排序字段次序与索引中列次序不一致,无法应用索引排序,比如索引是 key idx_kp1_kp2(key_part1,key_part2)

  1. SELECT * FROM t1 ORDER BY key_part2, key_part1; 
  1. SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC

5. ey_part1 是范围萌芽,key_part2 无法应用索引排序

4. order by 中的起落序和索引中的默认起落不一致,无法应用索引排序

  1. SELECT * FROM t1 

      推荐阅读

      iOS自定义启动界面 附代码

    沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 简介:比来在重构app,原app用的是xcode自带的启动图设置。但相对来说自定义启动图可扩大性更强一点,今天花>>>详细阅读


    本文标题:MySQL order by原理以及优化?这篇来给你逐步解析

    地址:http://www.17bianji.com/lsqh/38202.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)