測試資料:2億行,被篩選出的資料,3kw多行。
眾所周知 like %str%無法走索引,但是我們如果實在是有這種需求要達到like '%str%'的篩選目的,怎麼優化好一些呢?
以下是我的一些思考:
(2)構建計算列:
如果資料量少,直接基於要like的a列,再構造乙個函式計算列b列取值為reverse(a),然後每次a列生成字串,b列會自動產生反向字串。
然後 比如a列為『abcde』 原本 我要like '%bc%',現在只需要a b列都加上索引,條件給 and a like 'bc%' and b like 'cb%'就好了。
(3)強行用其他辦法試一波
反向
charindex
對比,直接like花費13分鐘
使用charindex
Oracle 優化 Like語句優化
1.盡量不要使用 like 2.對於like 可以用列的索引 3.對於like 以 開頭,不以 結尾 可以利用 反序列和函式索引 變成 like 4.查詢 like xx 應該使用函式instr string source,string xx 例如 select count from tb name...
模糊查詢like優化
原sql語句 select project name from project info where project name like 北京 我們都知道,因為索引最左字首匹配原則,全模糊匹配,sql是不走索引的。所以採用另一種機制,為project name建立索引,從索引表中模糊匹配索引值去查詢...
MySQL的LIKE模糊查詢優化
這種方式對於資料量少的時候,我們倒可以隨意用,但是資料量大的時候,我們就體驗到了查詢效能的問題,像老化的車子艱難趴著坡一樣,並且這種方式並未使用到索引,而是全表掃瞄 mysql 高效模糊查詢 代替like 而對於 或者 方式,explain一下可以發現查詢使用到了索引,效能提公升了不少,當然這種方式...