1. 程式人生 > >關於like %%的優化思路

關於like %%的優化思路

一個 利用 記錄 char nbsp 問題 har 思考 reverse

測試數據:2億行,被篩選出的數據,3KW多行。

眾所周知 like %str%無法走索引,但是我們如果實在是有這種需求要達到like ‘%str%‘的篩選目的,怎麽優化好一些呢?

以下是我的一些思考:

(1)全文索引:原理是利用倒排索引,構建由謂詞、短語、關鍵詞等組成記錄索引。但其實如果詞用的不好會有問題,而且並不夠精準,可能str相關的也出來了,且並不包含str這個字符串;

(2)構建計算列: 

  如果數據量少,直接基於要like的A列,再構造一個函數計算列B列取值為reverse(A),然後每次A列生成字符串,B列會自動產生反向字符串。      然後 比如A列為‘abcde’ 原本 我要like ‘%bc%‘,現在只需要A B列都加上索引,條件給 AND A like ‘bc%‘ AND B like ‘cb%‘就好了。 (3)強行用其他辦法試一波 【1】反向 技術分享圖片

【2】charindex

對比,直接like花費13分鐘

技術分享圖片

使用charindex

技術分享圖片

關於like %%的優化思路