【愚公系列】2021年12月 Mysql数据库-模糊查询like效率问题和优化方案
【摘要】 前言这篇文章主要向大家介绍Mysql模糊查询like效率,以及更高效的写法,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。提示:以下是本篇文章正文内容,下面案例可供参考 一、模糊查询like效率在使用msyql进行模糊查询的时候,很天然的会用到like语句,一般状况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时候,查询的效率就很容易显现出...
前言
这篇文章主要向大家介绍Mysql模糊查询like效率,以及更高效的写法,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。
提示:以下是本篇文章正文内容,下面案例可供参考
一、模糊查询like效率
在使用msyql进行模糊查询的时候,很天然的会用到like语句,一般状况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时候,查询的效率就很容易显现出来。这个时候查询的效率就显得很重要。
二、更高效的写法
1.索引
SELECT `column` FROM `table` WHERE `field` like 'keyword%';
没加索引情况下是全表搜索,加了索引情况下速度会大幅度提升,但不适用于全部搜索,只适用于"keywork%"关键字开头
2.LOCATE(‘substr’,str,pos)方法
SELECT `column` FROM `table` WHERE LOCATE('keyword', `field`)>0
keyword是要搜索的内容,field为被匹配的字段,查询出全部存在keyword的数据
3.POSITION(‘substr’ IN field
)方法
SELECT `column` FROM `table` WHERE POSITION('keyword' IN `filed`)
position能够看作是locate的别名,功能跟locate同样
4.INSTR(str
,‘substr’)方法
SELECT `column` FROM `table` WHERE INSTR(`field`, 'keyword' )>0
5.FIND_IN_SET(str1,str2)方法
SELECT * FROM `person` WHERE FIND_IN_SET('apply',`name`);
总结
like优化大部分写法都是返回索引位置来提升查询效率,并非全部去匹配。因为达到百万级基本都是分库分表,这种写法一样意义不是特别大like基本够用,学习中需要多多积累记录下。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)