sql模糊查询用like就不能走索引了吗?
如果您使用like“mathematic%”--这种模糊查询可以通过范围索引,如果开头有一个%符号,它就不会通过索引
与update和insert相比,一般查询应该是数据库中最频繁的操作。在一些应用场景中,需要使用like模糊查询,所以对于大数据,需要注意。
现在我们来分析一下为什么like语句的查询效率很低。有400万个测试数据,如下图所示:
第一步:不要使用索引
下图显示在不使用索引的情况下,普通查询的时间消耗等于同类查询的时间消耗,这也是不可避免的,因为它需要额外的算法。
第二步:使用索引
如下图所示,使用索引后,平均查询时间基本为秒,非常快;而like查询时间超过一秒。
第三步:分析原因
如下图所示,使用解释进行分析。此时,我们立即了解到普通查询使用索引,但like语句不使用索引。
因此,mysql中like查询效率低下的原因是在某些情况下,like查询不能使用索引,会扫描整个表。
最后,让我们添加like语句有时可以使用索引,如下图所示。如果我们写“like”ddwhenquerying“”或者like”dd%”,这样索引就可以使用了,此时的查询速度会比较快。虽然它的速度快了一点,但是它仍然比普通的查询要花费更多的时间。
因此,当表中的数据量较大时,尽量不要使用like语句。如果你想做模糊搜索,建议使用搜索引擎,比如solr,它的功能是like的n倍。
原文标题:为什么like会使索引失效 sql模糊查询用like就不能走索引了吗?,如若转载,请注明出处:https://www.saibowen.com/wenda/17155.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。