MySQL的LIKE模糊查詢優化

2021-10-06 20:24:42 字數 778 閱讀 1694

%***%這種方式對於資料量少的時候,我們倒可以隨意用,但是資料量大的時候,我們就體驗到了查詢效能的問題,像老化的車子艱難趴著坡一樣,並且這種方式並未使用到索引,而是全表掃瞄

mysql 高效模糊查詢 代替like

而對於***% 或者%***方式,explain一下可以發現查詢使用到了索引,效能提公升了不少,當然這種方式不適用與所有的查詢場景。

可以採取以下的函式進行查詢。

locate('substr',str,pos)方法

position('substr' in field)方法

instr(str,'substr')方法

查詢效率比如果:table.field like '%aaa%' 可以改為locate ('aaa' , table.field) > 0

返回子串substr在字串str第乙個出現的位置,如果substr不是在str裡面,返回0.

mysql> select locate('bar', 'foobarbar'); -> 4 mysql> select locate('xbar', 'foobar'); -> 0

該函式是多位元組可靠的。

返回子串substr在字串str第乙個出現的位置,從位置pos開始。如果substr不是在str裡面,返回0。

mysql> select locate('bar', 'foobarbar',5); -> 7

mysql like模糊查詢提高效率的奇葩方法

標籤: mysql

mysql模糊查詢like優化

使用 like value 不走索引 select column from table where field like keyword 1.可使用 like value 前值匹配,可走索引 select column from table where field like keyword 2.使用...

mysql插入,like模糊查詢

1.insert into 最常用簡單的插入語句,可以有以下兩種用法 insert into tb user id,name,age values 100022 tom 25 只給指定的列賦值 insert into tb user values 100022 tom 25 必須 給所有列賦值 注 ...

like 模糊查詢

sql 模糊查詢 逗號,在sql中like中不需要轉義,但是如果 在sql中的某個欄位值用 分隔資料,需要獲取資料的時候直接把 拆分成資料,獲得乙個資料的list。例如 需要查詢某欄位是否包含乙個值,111是否存在於1111,2111,1112,1121,1113這個欄位中 因為根據 逗號分開,要求...