[丹臣]ORACLE中Like與Instr效能大比拼

idba發表於2009-08-03

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內建的一些函式,是經過相當程度的優化的。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1384/viewspace-611230/,如需轉載,請註明出處,否則將追究法律責任。

相關文章