一般含like的sql有下面3種情況
1. %在尾,類似like 'ABC%'.這種在查詢列創建一般索引
2. %在頭,類似like '%ABC'.這種在查詢列利用反向索引+反向函數
3. %在頭尾,類似like '%ABC%'.這種利用instr函數+函數索引
工具/原料
oracle數據庫,sqlplus
方法/步驟
下面我們逐一介紹,首先我們看一下第一種情況,也就是%在尾的這種情況。現場創建一張測試表t1,並將t1表灌入100萬條測試數據。
不用建索引,我們直接進行update操作,先看一下全表掃描情況的資源消耗情況,通過下圖可以看到t1在update時全表掃描邏輯讀達到61672
對於%在尾的這種情況,我們直接在where list中相應的字段創建索引。
我們再次執行同樣的update操作,觀察一下該sql的執行計劃,通過下圖可以看到t1在update時已經選取了我們的索引,而且邏輯讀只有650
小結:通過比對,我們可以看到對應%在尾的這種情況,我們直接創建一般的索引就可以達到優化sql的目的。