数据库 索引
Posted su-feng-address
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库 索引相关的知识,希望对你有一定的参考价值。
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是有顺序的,所以....
以上是关于数据库 索引的主要内容,如果未能解决你的问题,请参考以下文章
javascript UV Index Monitor App订阅PubNub并显示UV索引值。博文的代码片段。在这里查看项目:https:// githu
c_cpp UV Index Indicator订阅PubNub并使用颜色显示UV索引值。博文的代码片段。在这里查看项目:https:/
在片段着色器中,为啥我不能使用平面输入整数来索引 sampler2D 的统一数组?
片段(Java) | 机试题+算法思路+考点+代码解析 2023
索引1处片段中的非法字符:Heroku上的#{systemEnvironment ['DATABASE_URL']}配置数据源