索引與優(yōu)化like查詢

1. like %keyword? ? 索引失效,使用全表掃描。但可以通過翻轉(zhuǎn)函數(shù)+like前模糊查詢+建立翻轉(zhuǎn)函數(shù)索引=走翻轉(zhuǎn)函數(shù)索引,不走全表掃描。

2. like keyword%??? 索引有效。

3. like %keyword% 索引失效,也無法使用反向索引。

====================================================================

1. 使用下面的函數(shù)來進行模糊查詢,如果出現(xiàn)的位置〉0,表示包含該字符串。

查詢效率比like要高。

如果: table.field like? ‘%AAA%’ 可以改為 locate (‘AAA’ , table.field) > 0

LOCATE(substr,str)

POSITION(substr IN str)

返回子串substr在字符串str第一個出現(xiàn)的位置,如果substr不是在str里面,返回0。

使用instr

select count(*) from table t where instr(t.column,’xx’)> 0

這種查詢效果很好,速度很快。

2. 查詢%xx的記錄

select?count(c.c_ply_no)?as?COUNT

from?Policy_Data_All?c,?Item_Data_All?i

where?c.c_ply_no?=?i.c_ply_no

and?i.C_LCN_NO?like?’%245’

在執(zhí)行的時候,執(zhí)行計劃顯示,消耗值,io值,cpu值均非常大,原因是like后面前模糊查詢導致索引失效,進行全表掃描

解決方法:這種只有前模糊的sql可以改造如下寫法

select?count(c.c_ply_no)?as?COUNT

from?Policy_Data_All?c,?Item_Data_All?i

where?c.c_ply_no?=?i.c_ply_no

andreverse(i.C_LCN_NO)likereverse(‘%245’)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容