基于MySQL5.5.33
数据量:
索引失效情况总结:
创建索引sql:ALTER TABLE `table_name` ADD INDEX index_name ( `column` ),表中先创建2个字段的普通索引
1.sql语句中or的语句使用,执行sql:
1).生效
2).未生效
总结:or的使用2边必须都是索引列,如果有一列不是,则索引无法生效,进行了全表扫描
2.like的使用:
1).生效
2).未生效:
总结:like的百分号不能写在前面,否则无法生效,进行全表扫描
3.索引列上进行计算:
1).生效
2).未生效
总结:索引列上不能进行计算,可以将计算放到条件上
4.索引列是varchar类型
1).生效
2).未生效
总结:索引列如果是varchar字符串类型,则必须加上''进行包含
5.组合索引:创建索引sql(ALTER TABLE `table_name` ADD INDEX index_name(`column`,`column`,`column`);),遵从最左前缀利用索引中最左边的列集来匹配行,这样的列称为最左前缀,例如由id,name,age3个字段构成的索引,索引行中按id/name/age的顺序存放,索引可以搜索下面字段组合:(id,name,age)、(id,name)、或者id。如果列不构成索引最左面的前缀,MySQL不能使用局部索引,如(age)或者(name,age)组合则不能使用索引查询
1)生效:
2).未生效
1.未按照最左前缀的原则:
2.按照最左前缀使用or进行查询:
3.遵从原则,在索引列上进行计算