分析为什么mysql中like模糊查询效率低

如果我们查询的时候写成“like 'dd_'或者like 'dd%'”,这样是可以用到索引的,此时的查询速度也会相对的快一点。虽然快了一点,但是还是比普通查询耗时要多很多。因此,当表的数据量比较大的时候,尽量还是不要用like语句了。如果想做模糊搜索,建议用搜索引擎,比如solr,这样会比like强大n倍。
分析为什么mysql中like模糊查询效率低
相比update和insert,一般查询应该是数据库中操作最频繁的。而在有些应用场景需要用到like模糊查询,那么对于大数据,查询的时候就要注意了。

现在来分析一下为什么like语句查询的效率会很低,测试数据共4000000条,如下图:

第一步:不使用索引

下图可以看出,不使用索引的时候普通查询与like查询的耗时相当,like略长,这也是必然的,因为它要进行额外的算法。

第二步:使用索引

如下图,使用索引后,普通查询的耗时基本算是秒查,非常快;而like查询还是耗时一秒多。

第三步:分析原因

如下图,用explain分析一下,此时我们立刻明白了,普通查询用到了索引,但是like语句没有用到索引。

所以,照成mysql中like查询效率低下的原因是:在有些情况下,like查询使用不到索引,会扫描全表。

最后,补充一下,like语句有时候也是可以用到索引的,如下图,如果我们查询的时候写成“like 'dd_'或者like 'dd%'”,这样是可以用到索引的,此时的查询速度也会相对的快一点。虽然快了一点,但是还是比普通查询耗时要多很多。

因此,当表的数据量比较大的时候,尽量还是不要用like语句了。如果想做模糊搜索,建议用搜索引擎,比如solr,这样会比like强大n倍。2016-11-03
mengvlog 阅读 9 次 更新于 2025-07-21 02:48:28 我来答关注问题0
  •  宜美生活妙招 mysql中模糊查询like和locate函数谁的效率高,为什么?

    在MySQL中,LIKE和LOCATE函数的效率高低取决于具体的使用场景,但一般而言,在能够利用索引的情况下,LOCATE函数可能效率更高一些。以下是具体原因:索引利用:LIKE:当使用LIKE进行模糊查询时,如果模式以”%“开头,MySQL通常无法利用索引,导致全表扫描,从而降低查询效率。LOCATE:LOCATE函数本身不...

  •  翡希信息咨询 MySQL like 和 regexp 比较

    MySQL中LIKE和REGEXP的性能比较 在MySQL中,LIKE和REGEXP都用于进行字符串匹配,但它们在性能上存在差异。总体而言,LIKE的性能通常优于REGEXP,这主要归因于LIKE操作的简单性和数据库优化器对其的高效利用。一、性能差异的原因 操作复杂度:LIKE通常用于简单的模式匹配,特别是当模式的开始部分不是通配符时。

  •  云易网络科技 MySQL中like运算符的用途与使用方法MySQL中like作用

    因此,LIKE运算符在MySQL中是一个强大而灵活的工具,可以用于过滤、搜索和匹配字符串。通过使用LIKE运算符,我们可以轻松地查询数据,找出满足我们要求的行。但需要注意的是,使用LIKE可能会导致查询时间变长,因此,在使用它时需要谨慎考虑。

  • 所以,照成mysql中like查询效率低下的原因是:在有些情况下,like查询使用不到索引,会扫描全表。最后,补充一下,like语句有时候也是可以用到索引的,如下图,如果我们查询的时候写成“like 'dd_'或者like 'dd%'”,这样是可以用到索引的,此时的查询速度也会相对的快一点。虽然快了一点,但是还是...

  • MySQL的模糊查询主要通过两个函数实现:LIKE和LOCATE。然而,在InnoDB索引中,使用"%"字符会导致索引失效,这限制了模糊查询的效率。对于需要进行全文查找的场景,如搜索引擎和电子商务网站的查询需求,InnoDB的全文检索功能提供了另一种高效解决方案。全文检索技术主要依赖倒排索引(Inverted Index)实现,它存储...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部