前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】2021年12月 Mysql数据库-模糊查询like效率问题和优化方案

【愚公系列】2021年12月 Mysql数据库-模糊查询like效率问题和优化方案

作者头像
愚公搬代码
发布2021-12-08 10:47:07
9540
发布2021-12-08 10:47:07
举报
文章被收录于专栏:历史专栏

文章目录

前言

这篇文章主要向大家介绍Mysql模糊查询like效率,以及更高效的写法,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

提示:以下是本篇文章正文内容,下面案例可供参考

一、模糊查询like效率

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

二、更高效的写法

1.索引

代码语言:javascript
复制
SELECT `column` FROM `table` WHERE `field` like 'keyword%';

没加索引情况下是全表搜索,加了索引情况下速度会大幅度提升,但不适用于全部搜索,只适用于"keywork%"关键字开头

2.LOCATE(‘substr’,str,pos)方法

代码语言:javascript
复制
SELECT `column` FROM `table` WHERE LOCATE('keyword', `field`)>0

keyword是要搜索的内容,field为被匹配的字段,查询出全部存在keyword的数据

3.POSITION(‘substr’ IN field)方法

代码语言:javascript
复制
SELECT `column` FROM `table` WHERE POSITION('keyword' IN `filed`)

position能够看作是locate的别名,功能跟locate同样

4.INSTR(str,‘substr’)方法

代码语言:javascript
复制
SELECT `column` FROM `table` WHERE INSTR(`field`, 'keyword' )>0 

5.FIND_IN_SET(str1,str2)方法

代码语言:javascript
复制
SELECT * FROM `person` WHERE FIND_IN_SET('apply',`name`);

总结

like优化大部分写法都是返回索引位置来提升查询效率,并非全部去匹配。因为达到百万级基本都是分库分表,这种写法一样意义不是特别大like基本够用,学习中需要多多积累记录下。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/12/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 前言
  • 一、模糊查询like效率
  • 二、更高效的写法
    • 1.索引
      • 2.LOCATE(‘substr’,str,pos)方法
        • 3.POSITION(‘substr’ IN field)方法
          • 4.INSTR(str,‘substr’)方法
            • 5.FIND_IN_SET(str1,str2)方法
            • 总结
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档