建議使用者,親自測試后再使用,不要盲目使用下面的方法和建議!        17. 使用表的別名(Alias)                                                                                                   當在SQL語句中連接多個表時, 請使用表的別名并把別名前綴于每個Column上.這樣一來,就可以減少解析的時間并減少那些由Column歧義引起的語法錯誤.       (譯者注: Column歧義指的是由于SQL中不同的表具有相同的Column名,當SQL語句中出現(xiàn)這個Column時,SQL解析器無法判定這個Column的歸屬)       18. 用EXISTS替代IN       在許多基于基礎(chǔ)表的查詢中,為了滿足一個條件,往往需要對另一個表進行聯(lián)接.在這種情況下, 使用EXISTS(或NOT EXISTS)通常將提高查詢的效率.       低效:       SELECT *        FROM EMP (基礎(chǔ)表)       WHERE EMPNO > 0       AND DEPTNO IN (SELECT DEPTNO        FROM DEPT        WHERE LOC = ‘MELB’)       高效:       SELECT *        FROM EMP (基礎(chǔ)表)       WHERE EMPNO > 0       AND EXISTS (SELECT ‘X’        FROM DEPT        WHERE DEPT.DEPTNO = EMP.DEPTNO       AND LOC = ‘MELB’)       (譯者按: 相對來說,用NOT EXISTS替換NOT IN 將更顯著地提高效率,下一節(jié)中將指出)       19. 用NOT EXISTS替代NOT IN       在子查詢中,NOT IN子句將執(zhí)行一個內(nèi)部的排序和合并. 無論在哪種情況下,NOT IN都是最低效的 (因為它對子查詢中的表執(zhí)行了一個全表遍歷). 為了避免使用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’);