解决like '%字符串%'时索引不被使用的方法

如果like以通配符开头('%abc')时索引会失效会变成全表扫描的操作。那么我们改如何解决这个问题。

现在我们建立一个tbl_user表,并加入如下图的数据。

 

我们现在在建立索引之前查看sql的执行计划。执行的是全表扫描。

现在我们建立name和age的覆盖索引。

现在我们再来看一下这个like的执行计划,查看是否使用了索引。我们现在的like使用到了索引。

 如果非得使用like使用索引的话,就要使用覆盖索引来解决,你建的索引和查询的字段上一样。

LIKE 语句不允许使用 % 开头,否则索引会失效;

当真的需要两边都使用%来模糊查询时,只有当这个作为模糊查询的条件字段(例子中的name)以及所想要查询出来的数据字段(例子中的 id & name & age)都在索引列上时,才能真正使用索引,否则,索引失效全表扫描(比如多了一个 salary 字段)

原文地址:https://www.cnblogs.com/flzs/p/13562191.html