题目
下列哪项不是Mysql索引失效场景?
A.索引字段使用了函数,比如SUBSTR(id_no,1,3)
B.错误的Like使用,比如占位符出现在首部,导致无法走索引
C.类型隐式转换问题,字段类型为varchar,但在SQL语句中使用了int类型,导致全表扫描
D.使用OR操作,因为OR是或的关系,所以只要有一个字段有索引即可
解答
正确答案是 D
答案是D
D 在使用or关键字时,切记两个条件都要添加索引,否则会导致索引失效。而且如果or两边同时使用“>”和“<”,则索引也会失效
A 题目中只列举了SUBSTR函数,像CONCAT等类似的函数,也都会出现类似的情况。
,获得数据之后再进行截取、计算,导致索引索引失效。同时,还伴随着性能问题
B 针对like的使用非常频繁,但使用不当往往会导致不走索引。
由于占位符出现在首部,导致无法走索引。这种情况不做索引的原因很容易理解,索引本身就相当于目录,从左到右逐个排序。而条件的左侧使用了占位符,导致无法按照正常的目录进行匹配,导致索引失效就很正常了
C 出现索引失效的原因是:varchar和int是两个种不同的类型。参数类型与字段类型不匹配,导致类型发生了隐式转换,索引失效。
更多的失效场景,可以观看文章:https://xiaozhao.vip/article/detail/5891
帖子还没人回复快来抢沙发