MySQL5.7是否总是在索引列和“like pattern”是什么时执行explain类型索引?

gcxthw6b  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(350)


一个面试问题:“mysql索引什么时候不被使用?”有人说:“当在like中使用“%”,并且“%”是第一个字符时。”
然后我测试了sql,然后感到困惑。。。
他的意思是1.在类似的情况下mysql不使用索引进行搜索吗
或者
2.当遇到“%”或“%%”时,仍在使用索引,但将进行完全索引扫描,则索引将失效???

sqougxex

sqougxex1#

这是因为mysql不可能索引所有可能的子字符串。它只能处理 % 因为索引是有序的,所以有时 LIKE 可以使用索引优化查询。
mysql的问题 EXPLAIN 与其他rdbms平台相比,它的性能相当差,而且会有很多猜测,有时甚至是胡乱猜测。
相比之下,postgres将给出实际查询的执行方式,并考虑实际值。mysql倾向于对将要发生的事情给出最好的猜测,而实际结果可能完全不同。

相关问题