【oracle優化】優化含LIKE的SQL語句(1)?

Tags: 索引, 語句,

一般含like的sql有下面3種情況

1. %在尾,類似like 'ABC%'.這種在查詢列創建一般索引

2. %在頭,類似like '%ABC'.這種在查詢列利用反向索引+反向函數

3. %在頭尾,類似like '%ABC%'.這種利用instr函數+函數索引

工具/原料

oracle數據庫,sqlplus

方法/步驟

下面我們逐一介紹,首先我們看一下第一種情況,也就是%在尾的這種情況。現場創建一張測試表t1,並將t1表灌入100萬條測試數據。

【oracle優化】優化含LIKE的SQL語句(1)

不用建索引,我們直接進行update操作,先看一下全表掃描情況的資源消耗情況,通過下圖可以看到t1在update時全表掃描邏輯讀達到61672

【oracle優化】優化含LIKE的SQL語句(1)

對於%在尾的這種情況,我們直接在where list中相應的字段創建索引。

【oracle優化】優化含LIKE的SQL語句(1)

我們再次執行同樣的update操作,觀察一下該sql的執行計劃,通過下圖可以看到t1在update時已經選取了我們的索引,而且邏輯讀只有650

【oracle優化】優化含LIKE的SQL語句(1)

小結:通過比對,我們可以看到對應%在尾的這種情況,我們直接創建一般的索引就可以達到優化sql的目的。

相關問題答案