Mysql索引失效的情况:
最左匹配原则:
最左优先,以最左边的为起点任何连续的索引都能匹配上。同时遇到范围查询(>、<、between、like)就会停止匹配。指的是查询要从索引的最左前列开始并且不跳过索引中的列。
1.当表中的索引列为字符串类型时,where查询条件没有加引号索引失效。
比如:一个user表 其中的gid字段为字符串类型,
查询:
如果加了引号的话,由于建立了索引,所以会走索引列查询。
2.在建立了复合索引的情况下(username,age,gid)
当查询条件中缺少对username列,也就是缺少复合索引列的最左的索引列,违反最左匹配原则,会导致查询进行全表扫描。索引失效。
比如: select * from user where age=“222” and gid=“111”;缺少对username列。