ORACLE SQL效能最佳化系列 (五) (轉)
17. 使用表的別名(Alias):namespace prefix = o ns = "urn:schemas--com::office" />
當在語句中連線多個表時, 請使用表的別名並把別名字首於每個Column上.這樣一來,就可以減少解析的時間並減少那些由Column歧義引起的語法錯誤.
(譯者注: Column歧義指的是由於SQL中不同的表具有相同的Column名,當SQL語句中出現這個Column時,SQL解析器無法判斷這個Column的歸屬)
18. 用EXISTS替代IN
在許多基於基礎表的查詢中,為了滿足一個條件,往往需要對另一個表進行聯接.在這種情況下, 使用EXISTS(或NOT EXISTS)通常將提高查詢的.
低效:
*
FROM EMP (基礎表)
WHERE EMPNO > 0
AND DEPTNO IN (SELECT DEPTNO
FROM DEPT
WHERE LOC = ‘MELB’)
高效:
SELECT *
FROM EMP (基礎表)
WHERE EMPNO > 0
AND EXISTS (SELECT ‘X’
FROM DEPT
WHERE DEPT.DEPTNO = EMP.DEPTNO
AND LOC = ‘MELB’)
(譯者按: 相對來說,用NOT EXISTS替換NOT IN 將更顯著地提高效率,下一節中將指出)
19. 用NOT EXISTS替代NOT IN
在子查詢中,NOT IN子句將一個內部的排序和合並. 無論在哪種情況下,NOT IN都是最低效的 (因為它對子查詢中的表執行了一個全表遍歷). 為了避免使用NOT IN ,我們可以把它改寫成外連線(Outer Joins)或NOT EXISTS.
例如:
SELECT …
FROM EMP
WHERE DEPT_NO NOT IN (SELECT DEPT_NO
FROM DEPT
WHERE DEPT_CAT=’A’);
為了提高效率.改寫為:
(方法一: 高效)
SELECT ….
FROM EMP A,DEPT B
WHERE A.DEPT_NO = B.DEPT(+)
AND B.DEPT_NO IS NULL
AND B.DEPT_CAT(+) = ‘A’
(方法二: 最高效)
SELECT ….
FROM EMP E
WHERE NOT EXISTS (SELECT ‘X’
FROM DEPT D
WHERE D.DEPT_NO = E.DEPT_NO
AND DEPT_CAT = ‘A’);
(待續)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-960969/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE SQL效能最佳化系列 (十) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (十一) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (一) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (二) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (三) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (四) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (九) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (八) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (六) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (七) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (十二) (轉)OracleSQL
- Oracle SQL效能最佳化系列講座之三(轉)OracleSQL
- Oracle SQL效能最佳化系列講座之二(轉)OracleSQL
- Oracle SQL效能最佳化系列講座之一(轉)OracleSQL
- ORACLE SQL效能最佳化系列 (十四) 完結篇 (轉)OracleSQL
- Oracle效能最佳化之SQL最佳化(轉)OracleSQL
- Oracle SQL效能最佳化OracleSQL
- Oracle sql 效能最佳化OracleSQL
- Oracle SQL效能最佳化常用方法OracleSQL
- oracle SQL效能最佳化大總結OracleSQL
- ORACLE SQL效能優化系列 (一)OracleSQL優化
- Oracle SQL的最佳化[轉]OracleSQL
- Oracle SQL效能優化系列介紹OracleSQL優化
- Oracle效能最佳化之應用最佳化(轉)Oracle
- Oracle效能最佳化之最佳化排序操作(轉)Oracle排序
- Oracle效能最佳化之LockContention(轉)Oracle
- Oracle效能最佳化之Rollback(undo)Segment最佳化(轉)Oracle
- oracle performance tuning效能優化學習系列(五)OracleORM優化
- Oracle 11g 中SQL效能最佳化新特性之SQL效能分析器(SQLPA)OracleSQL
- oracle 效能最佳化Oracle
- 五種JVM效能最佳化技巧JVM
- Oracle效能最佳化之提升block的效率(轉)OracleBloC
- Oracle資料庫效能最佳化技術(轉)Oracle資料庫
- 效能調優——SQL最佳化SQL
- SQL效能最佳化之索引最佳化法SQL索引
- 效能最佳化之SQL語句最佳化SQL
- 【效能最佳化】ORACLE資料庫效能最佳化概述Oracle資料庫
- Oracle資料庫效能最佳化技術(轉載)Oracle資料庫