今天突然得知使用like %keyword%
这样的模糊查询会不使用索引,导致查询特别慢
明明建立了索引,为何Like模糊查询速度还是特别慢?
Like是否使用索引?
1、like %keyword 索引失效,使用全表扫描。但可以通过翻转函数+like前模糊查询+建立翻转函数索引=走翻转函数索引,不走全表扫描。
2、like keyword% 索引有效。
3、like %keyword% 索引失效,也无法使用反向索引。
解决方案:
使用mysql内置函数LOCATE
、POSITION
、INSTR
中的一个,查询内容在字段值中的位置
1 | -- 查询keyword在field中的位置 |