创建表、创建索引
分析case索引使用情况
一个20左右的表,建立三个左右的索引常规沟通,但是根据自己情况
1
分析一下:
1、创建复合索引的顺序为c1,c2,c3,c4
2、explain执行的结果:type=ref,key_len=132,ref=const,const,const,const
结论:在执行常量等值查询时,改版索引列的顺序并不会更改explan的执行结果,因为Mysql底层优化器会进行优化,但是推荐索引顺序列编写sql语句。
2
分析:
当出现范围的时候,type=range,key_len=99,比不用范围key_len=66增加了,说明使用上了索引,但对比Case1中执行结果,说明c4上索引失效。
结论:
范围右边索引列失效,但是范围当前位置(c3)的索引是有效的,从key_len=99可证明。
2.1
分析:
与上面explain执行结果对比,key_len=132说明索引用到了4个,因为对此sql语句mysql底层优化器会进行优化:范围右边索引列失效(c4右边已经没有索引列了),注意索引的顺序(c1,c2,c3,c4),所以c4右边不会出现失效的索引列,因此4个索引全部用上。
结论:
范围右边索引列失效,是有顺序的:c1,c2,c3,c4,如果c3有范围,则c4失效;如果c4有范围,则没有失效的索引