如果以下场景,及时相关字段建立了索引,也无法使用索引,在写SQL时要避免以下情况的出现
1.查询条件中 建立索引的字段列 最左一通配符 % 开始,例如 where a like '%xx';
2.查询条件中 建立索引的字段列 使用 IS NULL 或 IS NOT NULL;
3.查询条件中 建立索引的字段列 使用 关键词 OR;
4.查询条件中 建立索引的字段列 上进行数字运算或函数运算(包括隐式数据转换);
5.查询条件中 建立索引的字段列 使用负向查询条件: NOT、!=、<>、!<、!>、NOT IN、NOT LIKE等;
6.对于复合索引,查询条件没有匹配第一个索引列,即使覆盖了其他索引列,也无法使用索引,因为复合索引是按从左到右一次匹配,即从第一个索引列开始,一致到最后一个索引列;中间如果出现字段不能匹配,则后续的索引字段不会再匹配;
另外,主键字段不需要在建立索引,例如:已针对(a,b)建立主键,就不需要在对 a 或(a,b)建立索引;不过,如果已针对(a)建立主键,可以针对(b,a)建立索引;