首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Oracle 效能優化:LIKE 查詢優先前綴匹配啟用索引範圍掃描

     編輯:Oracle 教學

核心原則

LIKE 子句能否使用索引,關鍵在於萬用字元 (%) 位置:

  • 前綴匹配:LIKE 'ABC%' → 可使用索引 (INDEX RANGE SCAN)
  • 後綴/中間匹配:LIKE '%ABC' 或 LIKE '%ABC%' → 無法使用索引 (FULL TABLE SCAN)

實戰對比

無法使用索引:前置萬用字元

執行計畫:INDEX RANGE SCAN on CITY_NAME_IDX — 索引有序特性支援範圍查找。

為什麼前綴匹配可用索引?

  1. B-tree 索引按欄位值排序儲存。
  2. 'S%' 代表所有以 'S' 開頭的字串,在索引中形成連續範圍。
  3. 優化器可直接定位範圍起始與結束位置,進行範圍掃描。

常見場景與改寫技巧

1. 固定前綴代碼查詢 (最佳)

3. 後綴/中間匹配的替代方案

方案適用場景實作方式
反向索引 (REVERSE)固定後綴查詢 (如尾碼)CREATE INDEX idx_rev ON t(REVERSE(col)) + WHERE REVERSE(col) LIKE REVERSE('%suffix')
Oracle Text / ctxsys全文檢索、模糊搜尋建立 Context 索引,使用 CONTAINS 查詢
函數索引 (SUBSTR)固定位置子字串CREATE INDEX idx_sub ON t(SUBSTR(col, -3)) + WHERE SUBSTR(col, -3) = 'abc'
應用層過濾小資料集、低頻查詢先用索引篩選候選集,應用層再 LIKE 過濾

4. 反向索引實作範例

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved