MySql模糊查询性能优化

Bertha 。 2021-12-21 09:43 767阅读 0赞

先看例子:

通用模糊查询操作:

select * from n_order_pay_refund bean where 1=1 and bean.account_number like ‘%843121000000104259822%’ order by bean.pay_time

调用instr()函数:
select * from n_order_pay_refund bean where 1=1 and instr(bean.account_number,’843121000000104259822’)>0 order by bean.pay_time

利用explain可以看出上面两个查询的访问行数是一致的。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzE5MTY3NjI5_size_16_color_FFFFFF_t_70

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzE5MTY3NjI5_size_16_color_FFFFFF_t_70 1

但执行sql之后查看信息相比确实快了两秒。

like

20190627154751116.png

instr()

20190627154756169.png

INSTR(STR,SUBSTR) 在一个字符串(STR)中搜索指定的字符(SUBSTR),返回发现指定的字符的位置(INDEX);
STR 被搜索的字符串
SUBSTR 希望搜索的字符串
结论:在字符串STR里面,字符串SUBSTR出现的第一个位置(INDEX),INDEX是从1开始计算,如果没有找到就直接返回0,没有返回负数的情况。

其实instr( )项目中的实际应用,查看用户注册创建的用户名是否包含敏感词汇其中,INSTR(),中的第一个为传入的用户名,第二个为敏感词库的表.

发表评论

表情:
评论列表 (有 0 条评论,767人围观)

还没有评论,来说两句吧...

相关阅读

    相关 mysql 模糊查询

    SQL模糊查询,使用like比较关键字,加上SQL里的通配符,请参考以下:  1、LIKE'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。