为什么like会使索引失效 sql模糊查询用like就不能走索引了吗?
sql模糊查询用like就不能走索引了吗?
如果您使用like “mathematic%”--这种模糊查询可以通过范围索引,如果开头有一个%符号,它就不会通过索引
与update和insert相比,一般查询应该是数据库中最频繁的操作。在一些应用场景中,需要使用like模糊查询,所以对于大数据,需要注意。
现在我们来分析一下为什么like语句的查询效率很低。有400万个测试数据,如下图所示:
第一步:不要使用索引
下图显示在不使用索引的情况下,普通查询的时间消耗等于同类查询的时间消耗,这也是不可避免的,因为它需要额外的算法。
第二步:使用索引
如下图所示,使用索引后,平均查询时间基本为秒,非常快;而like查询时间超过一秒。
第三步:分析原因
如下图所示,使用解释进行分析。此时,我们立即了解到普通查询使用索引,但like语句不使用索引。
因此,MySQL中like查询效率低下的原因是在某些情况下,like查询不能使用索引,会扫描整个表。
最后,让我们添加like语句有时可以使用索引,如下图所示。如果我们写“like”DD when querying“”或者like”DD%”,这样索引就可以使用了,此时的查询速度会比较快。虽然它的速度快了一点,但是它仍然比普通的查询要花费更多的时间。
因此,当表中的数据量较大时,尽量不要使用like语句。如果你想做模糊搜索,建议使用搜索引擎,比如Solr,它的功能是like的n倍。
为什么like会使索引失效 like走索引 like查询如何有索引效果
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。