模糊查詢like優化

2021-09-10 07:14:48 字數 615 閱讀 6567

原sql語句:select project_ name from project_info where project_name like "%北京%"

我們都知道,因為索引最左字首匹配原則,全模糊匹配,sql是不走索引的。

所以採用另一種機制,為project_name建立索引,從索引表中模糊匹配索引值去查詢索引值。

原sql語句中我只需要project_name,因此為project_name建立索引,形成「表」,因此只從索引表中取速率更快。

通過explain後查詢得到sql語句走的是 index索引查詢

如果需要查詢多個字段,例如sql

select project_name,project_code from project_info where project_name like "%北京%"

可以建立聯合索引,為project_code,project_name建立聯合索引,這樣依舊從索引表中取需要的字段,速度必然快

從一開始的6.3秒變為0.248秒

sql:select project_name from project_info where instr(project_name,"北京") >0

instr()相當於擷取字串,用時4.9秒

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模糊查詢優化

這種方式對於資料量少的時候,我們倒可以隨意用,但是資料量大的時候,我們就體驗到了查詢效能的問題,像老化的車子艱難趴著坡一樣,並且這種方式並未使用到索引,而是全表掃瞄 mysql 高效模糊查詢 代替like 而對於 或者 方式,explain一下可以發現查詢使用到了索引,效能提公升了不少,當然這種方式...

like 模糊查詢

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