解决like '%字符串%'时索引不被使用的方法
如果like以通配符开头('%abc')时索引会失效会变成全表扫描的操作。那么我们改如何解决这个问题。
现在我们建立一个tbl_user表,并加入如下图的数据。
![](https://img2020.cnblogs.com/blog/1468187/202008/1468187-20200825213415809-447722311.png)
我们现在在建立索引之前查看sql的执行计划。执行的是全表扫描。
现在我们建立name和age的覆盖索引。
现在我们再来看一下这个like的执行计划,查看是否使用了索引。我们现在的like使用到了索引。
如果非得使用like使用索引的话,就要使用覆盖索引来解决,你建的索引和查询的字段上一样。
LIKE 语句不允许使用 % 开头,否则索引会失效;
当真的需要两边都使用%来模糊查询时,只有当这个作为模糊查询的条件字段(例子中的name)以及所想要查询出来的数据字段(例子中的 id & name & age)都在索引列上时,才能真正使用索引,否则,索引失效全表扫描(比如多了一个 salary 字段)
本文来自博客园,作者:飞龙在生,转载请注明原文链接:https://www.cnblogs.com/flzs/p/13562191.html