mysql 查询优化记录

目录

一、like查询优化

1.locate('keyword', table.field) > 0

2.POSITION('substr' IN `field`)方法

3.INSTR(`str`,'substr')方法


写在最前面~~~~

随着项目不断升级,项目从几千数据量不断累加,直到数据量破百万,原先为了代码灵活性考虑的数据查询,对于数据查询效率的拖累开始逐步体现出来了。

此文档作为项目开发碰到的查询问题进行记录,以此勉励自己,也方便今后碰到重复问题少走弯路。

欢迎各位大牛进行指导。

一、like查询优化

对应like模糊查询,小数据量采用"table.field like %keyword%"进行模糊查询,基本上能够满足业务需求,对应查询速度的影响也不大,一旦项目达到几万上百万,查询起来就显得特别吃力。

1. locate('keyword', table.field) > 0

SELECT LOCATE('xbar',`foobar`); 
###返回0 

SELECT LOCATE('bar',`foobarbar`); 
###返回4

SELECT LOCATE('bar',`foobarbar`,5);
###返回7

SELECT `column` FROM `table` WHERE LOCATE('keyword', `field`)>0

备注:LOCATE('substr',str,pos),返回 substr 在 str 中第一次出现的位置,如果 substr 在 str 中不存在,返回值为 0 。如果pos存在,返回 substr 在 str 第pos个位置后第一次出现的位置,如果 substr 在 str 中不存在,返回值为0。

2.POSITION('substr' IN `field`)方法

备注:position可以看做是locate的别名,功能跟locate一样

SELECT `column` FROM `table` WHERE POSITION('keyword' IN `filed`)

3.INSTR(`str`,'substr')方法

SELECT `column` FROM `table` WHERE INSTR(`field`, 'keyword' )>0

转自:【MySQL】Mysql模糊查询like提速优化 - 雪洗中关村 - 博客园

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值