一个采访问题:“什么时候mysql索引没有使用?”有人说:“当喜欢使用'%'时,'%'是第一个字符。”
然后我测试了sql,并感到困惑......
他的意思是1.在某些情况下,mysql不使用索引进行搜索
要么
2.当遇到'%abc'或'%abc%'时,仍然使用索引但是会进行全索引扫描,那么索引会失效吗???
这是因为MySQL不可能索引所有可能的子串。它只能处理abc%
前缀类型查询,因为索引是有序的,因此有时可以使用索引优化LIKE
查询。
MySQL的EXPLAIN
的问题是它与其他RDBMS平台相比相当弱,并且进行了大量的猜测,有时甚至是疯狂的推测。
相比之下,Postgres将为您提供实际查询执行方式的细分,并考虑实际值。 MySQL倾向于对将要发生的事情提出最佳猜测,实际结果可能完全不同。