码迷,mamicode.com
首页 > 数据库 > 详细

数据库 索引

时间:2019-03-31 19:29:57      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:like条件   效果   idt   思维   png   order   alt   引用   span   

Mysql优化思维导图:

                       技术图片

问题描述:

假设某表一个联合索引(c1,c2,c3,c4),以下哪条语句中只使用到该联合索引的c1,c2,c3部分?

 A where c1=x and c2=x and c4>x and c3=x
 B where c1=x and c2=x and c4=x order by c3=x
 C where c1=x and c4=x group by c3,c2
 D where c1=? and c5=? order by c2, c3
 E where c1=? and c2=? and c5=? order by c2,c3

准备工作:建立库,建立表,建立索引

                                                          技术图片

Btree左前缀使用规则:

如按f1, f2,f3, ....fN建立索引

查询时,where条件中,按f1,f2...的顺序由左到右,索引发挥作用,

如果中间某列没有条件或者like条件,导致后面的列,索引用不上。

索引也能用来排序,针对有顺序的表,索引的使用可以避免临时表和文件排序。

                                                         技术图片

select_type: SIMPLE    简单查询

type: range(表示范围查找效果)   ref(表示)

 

A 选项分析 :

                                                  技术图片

                                                                                                              图1

B 选项分析  

                                                            技术图片

                                                                                                                图2

C 选项分析:

     在图1,我们可以按照索引的顺序,直接进行分组,但选项中排序为order by c3,c2,

     经试验,

                                                技术图片

                                                                                                    图3

可以看到查询过程中,创建了临时表(Using temporary),文件排序(Using filesort)

变化order by顺序,

                                               技术图片

由于c1下的c2, c2下的c3,  c3下的c4都是有顺序的,所以避免了临时表的创建,文件的排序,

D选项也是一样的道理,该选项中只用到了c1,c2,c3;

E 选项分析,

由于在该表达式条件中,where c1=? and c2=? and c5=? order by c2,c3,已经确定了c2,c2下的c3是有顺序的,所以....

数据库 索引

标签:like条件   效果   idt   思维   png   order   alt   引用   span   

原文地址:https://www.cnblogs.com/Su-feng-address/p/10630506.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!