MySQL排序(OrderBy)为什么要使⽤索引⽬录
MySQL排序(Order By)为什么要使⽤索引
1. WHERE条件句中使⽤索引
以查询⼀条程咬⾦ 记录为例:
创建索引
先创建⼀个⼆级索引
不选择索引字段做条件查询
key=null 执⾏计划中没有⽤到索引
rows=69 全表扫描
使⽤索引字段作为条件查询
二级c语言题型
key=name_index 使⽤到索引name_index
rows=1
对⽐结论
1. 在选条件语句中不加索引字段,索引会失效,包括聚簇索引。
2. 使⽤的索引避免了全表扫描
2. Order By 使⽤索引
众所周知,为了避免全表扫描,条件句中增加了索引,上⾯性能对⽐⼀⽬了然。可是为什么要在Order By排序中也要使⽤索引字段呢?
创建索引
mysql语句顺序先创建⼀个⼆级索引hp_start_index
玳瑁猫的遗传规律不使⽤索引字段
软件测试培训要多少钱选择字段中有创建的⼆级索引字段name
key=null 没有使⽤到索引
rows=69 全表扫描
using filessort
使⽤索引字段
创建索引mysql
key=hp_start_index 使⽤到了索引
rows=3⾮全表扫描
Using index condition; Backward index scan
Order By有两种排序⽅法
1.  Backward index scan:使⽤索引扫描。索引本⾝就是有序的,所以不需要再次进⾏排序
2. using filessort:在内存中排序,占⽤CPU资源。如果查询结果太⼤还会产⽣临时⽂件,到磁盘中进⾏排序,这时候会进⾏⼤量IO操
作性能较差
其实这个SQL是分三步来执⾏的:
1. where得到数据
大型h5手游平台2. Order By处理数据(排序)看第⼀部执⾏计划是不是⽤到索引,如果⽤到了就可以直接获得索引的顺序,从⽽避免再次排序。如果没
⽤到就做排序(using filessort)。
3. 返回数据
结论
Order By语句跟WHERE语句中都⽤了索引字段,Order By中的索引才会⽣效
Order By中使⽤索引可避免重新排序导致CPU资源浪费

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。