ORACLE中like與instr效能大比拼

2021-06-18 03:54:51 字數 792 閱讀 9359

業務系統中t表中將近有1100萬資料,很多時候,我們要進行字串匹配,在sql語句中,我們通常使用like來達到我們搜尋的目標。但經過實際測試發現,like的效率與instr函式差別相當大。下面是一些測試結果:

sql> set timing on

sql> select count(*) from t where instr(title,'手冊')>0;

count(*)

----------

65881

elapsed: 00:00:11.04

sql> select count(*) from t where title like '%手冊%';

count(*)

----------

65881

elapsed: 00:00:31.47

sql> select count(*) from t where instr(title,'手冊')=0;

count(*)

----------

11554580

elapsed: 00:00:11.31

sql> select count(*) from t where title not like '%手冊%';

count(*)

----------

11554580

另外,我在結另外乙個2億多的表,使用8個並行,使用like查詢很久都不出來結果,但使用instr結果4分鐘即完成查詢,效能是相當的好。這些小技巧用好,工作效率提高不少。通過上面的測試說明,oracle內建的一些函式,是經過相當程度的優化的。

ORACLE中Like與Instr效能大比拼

t表中將近有1100萬資料,很多時候,我們要進行字串匹配,在sql語句中,我們通常使用like來達到我們搜尋的目標。但經過實際測試發現,like的效率與instr函式差別相當大。下面是一些測試結果 sql set timing on sql select count from t where ins...

ORACLE中like與instr效能大比拼

業務系統中t表中將近有1100萬資料,很多時候,我們要進行字串匹配,在sql語句中,我們通常使用like來達到我們搜尋的目標。但經過實際測試發現,like的效率與instr函式差別相當大。下面是一些測試結果 sql set timing on sql select count from t wher...

ORACLE中LIKE語句優化

1 盡量不要使用 like 2。對於 like 不以 開頭 oracle 可以應用 colunm 上的index 3。對於 like 的 不以 結尾 可以利用 reverse function index 的形式,變化成 like 建測試表和 index 注意,重點在於帶 reverse 的func...