提高MySQL模糊查询效率

2018年12月19日14:21:34 发表评论 522

提高MySQL模糊查询效率

在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时候,查询的效率就很容易显现出来。这个时候查询的效率就显得很重要。

1  查询方式

1.1  like

like查询是最常用的模糊查询方式,一般SQL写法如下:

  • field建立索引提高查询效率,但建立索引会带来系统性能损耗

Explain查看执行情况

虽然在field字段建立了索引,但第一种SQL语句无法使用索引,而且进行了全表搜索,数据量大时,效率会严重下降;第二种写法用到了索引提高了查询性能,但是以keyword开头的模糊查询并不满足所有情况。

提高MySQL模糊查询效率

1.2  LOCATE

  • 说明
  1. 若pos不存在,返回substr在str中第一次出现的位置,如果substr在str中不存在,返回值为 0 。
  2. 若pos存在,返回substr在str第pos个位置后第一次出现的位置,如果substr在str中不存在,返回值为0。
  • 模糊查询,SQL写法:

提高MySQL模糊查询效率

1.3  POSITION

  • 说明:position可以看做是locate的别名,功能跟locate一样
  • 模糊查询,SQL写法:

提高MySQL模糊查询效率

1.4  INSTR

  • 说明:功能跟instr一样
  • 模糊查询,SQL写法:

提高MySQL模糊查询效率

1.5  FIND_IN_SET

  • 说明:返回str2中str1所在的位置索引,其中str2必须以","分割开。
  • 模糊查询,SQL写法:

   提高MySQL模糊查询效率

1.6  全文索引

全文索引参考:http://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html

2  总结

综合来看前面的几种查询方式,由于like的查询局限性,可以用locate, position, instr替代,而且速度上比like要快。

weinxin
微信公众号
分享IT信息技术、北海生活的网站。提供北海本地化的信息技术服务。
路飞

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: