当前位置:首页 > 生活百科

mysql排序语句函数(详解mysql排序规则)

栏目:生活百科日期:2025-03-27浏览:0

索引的选择

①首先,清除emp上面的所有索引,只保留主键索引!

drop index idx_age_deptid_name on emp;

②查询:年龄为30岁的,且员工编号小于101000的用户,按用户名称排序

explain SELECT SQL_NO_CACHE * FROM emp WHERE age =30 AND empno &<101000 ORDER BY NAME ;

③全表扫描肯定是不被允许的,因此我们要考虑优化。

思路:首先需要让where的过滤条件,用上索引;

查询中,age.empno是查询的过滤条件,而name则是排序的字段,因此我们来创建一个此三个字段的复合索引:

create index idx_age_empno_name on emp(age,empno,name);

再次查询,发现using filesort依然存在。

原因: empno是范围查询,因此导致了索引失效,所以name字段无法使用索引排序。

所以,三个字段的符合索引,没有意义,因为empno和name字段只能选择其一!

④解决: 鱼与熊掌不可兼得,因此,要么选择empno,要么选择name

drop index idx_age_empno_name on emp;

create index idx_age_name on emp(age,name);

create index idx_age_empno on emp(age,empno);

两个索引同时存在,mysql会选择哪个?

explain SELECT SQL_NO_CACHE * FROM emp use index(idx_age_name) WHERE age =30 AND empno &<101000 ORDER BY NAME ;

原因:所有的排序都是在条件过滤之后才执行的,所以如果条件过滤了大部分数据的话,几百几千条数据进行排序其实并不是很消耗性能,即使索引优化了排序但实际提升性能很有限。 相对的 empno&<101000 这个条件如果没有用到索引的话,要对几万条的数据进行扫描,这是非常消耗性能的,使用empno字段的范围查询,过滤性更好(empno从100000开始)!

结论: 当范围条件和group by 或者 order by 的字段出现二选一时 ,优先观察条件字段的过滤数量,如果过滤的数据足够多,而需要排序的数据并不多时,优先把索引放在范围字段上。反之,亦然。

“mysql排序语句函数(详解mysql排序规则)” 的相关文章

gonna是什么意思(分享gonna的用法和例句)

喜欢看美剧的小伙伴们应该会经常听到gonna这个发音,记得第一次听到的时候还是很疑惑的???什么意思,后来经过了解才知道原来gonna是goingto的缩写。接...

如何策划一场活动方案(教你6点做好活动策划)

活动策划之前要问一问自己,为什么要做活动?或者说活动到底有什么好处?之前说过,活动运营可以贯穿我们整个运营过程,可以帮助我们拉新,留存,做转化,优化策略,但是针...

五天帝分别是谁(五方天帝人物分析)

中国神话传说里的上古五方天帝及属神,就是指东方天帝太昊伏羲,属神勾芒;南方天帝炎帝神农,属神祝融;西方天帝少昊金天,属神蓐收;北方天帝颛顼高阳,属神玄冥;中央天...

cad标注尺寸快捷键命令(18个cad标注尺寸快捷键)

CAD中快捷键数不胜数,功能分类也很齐全,只要我们熟练掌握绘图速度提升简直不是一点半点啊!下面为大家盘点的标注类快捷键如果感觉对你有所帮助就收集起来吧!1.D,...

doc文档是word文档吗,办公族都该知道的小知识

DOC和DOCX是两种最常见的文字格式。来自于微软的办公软件Word系列,几乎所有的文字处理软件都支持。DOCX,其中X代表XML,是更小和更轻的文件。DOCX...

mes生产系统软件是什么(国内mes系统公司排名)

MES系统是指智能制造系统,其软件的管理目的就是将制造企业的生产过程进行智能化管理,通过各设备联通以及设备与人联通实现高效生产。那么MES系统的管理优势是什么呢...

云计算行业的前景(网络工程云计算就业方向)

计算专业开设的时间并不长,很多学生打算报考这个专业前,想要了解一下这个专业靠不靠谱,是不是形同虚设,应该如何发展?下面就向大家介绍一下。  1.云计算专业定位...

创业规划计划书怎么写,2019商业计划书ppt模板推荐

这是一个实用的创业计划,适用于所有想创业的人。辽宁东港慧海海洋生物科技开发有限公司生产的新一代营养调味品上市了,这是一个具有很大市场空间的商机,这个生意可以从很...

c#打开浏览器并全屏(运行打开浏览器命令)

基于C#.NET+PhantomJS+Sellenium的高级网络爬虫程序。可执行Javascript代码、触发各类事件、操纵页面Dom结构、甚至可以移除不喜欢...

eclipse搜索文件名快捷键(mysqlworkbench使用教程)

Java开发,在使用Eclipse开发代码过程用到的小技巧,各种功能配置的使用,可以有效提高使用舒适度和开发效率,可以在平常开发中节约出很多时间,下面Java专...