mysql like 和 instr函数(转)

原文:https://blog.csdn.net/weixin_43606226/article/details/105364506

instr函数介绍
instr(表字段,字符串),这个函数返回字符串在表字段中的位置,若是找不到则返回0,找到则返回字符串所在位置。(返回位置从1开始)

从user表中查询username字段中包含’2’字符串的数据

instr函数使用

SELECT * FROM user WHERE INSTR(username,'2')>0;

上述语句相当于使用like

SELECT * FROM user WHERE username like '%2%'

这两句sql语句查询到的结果是一样的。

为什么使用instr函数
由上可知,like完全能实现instr函数的功能,但是为什么要使用instr函数。
因为instr查询速度比like的查询速度快。

like以’%'开头查询时,表中的列所加的索引不生效。
instr是一个函数,可以建立函数索引,如果过滤的条件有索引,那么instr就可以提高性能。
在没有索引的前提下,当数据量比较大时,instr要比like效率高。
简单来说,like以’%'为开头查询不走索引,instr函数查询走索引,所以instr性能比like要好。

posted @ 2021-07-24 17:34  pine007  阅读(1140)  评论(0编辑  收藏  举报