select id from t where name like '%abc%'
结论:是会的.
需要分情况讨论.
如果是前置模糊索引like '%abc'
势必会进行全表扫描.
like 'abc%'
依旧有可能进行全表扫描,当部分DBMD中返回结果超过该表的80%时,就失去使用索引的意义数据库会自动改用全表扫描.(例如: where mobile like '1%'
)
会导致全表扫描的sql:
判断null
or条件
前置%的like(如:like '%abc')
where条件中存在表达式
ps:先想到这么多,欢迎补充。
感谢 @彼岸花开 补充:
WHERE 子句中使用!=或<>操作符2.IN 和 NOT IN 也要慎用,否则会导致全表扫描
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
5 回答1.4k 阅读
3 回答1.2k 阅读✓ 已解决
2 回答2k 阅读
不一定 看查询条件。
如果是符合左前缀,即可走索引
比如
like abc%