• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • ORACLE SQL性能優化系列 (二)

    發表于:2008-10-27來源:作者:點擊數: 標簽:SqlsqlSQLoracleOracle
    8. 使用DECODE函數來減少處理時間 使用DECODE函數可以避免重復掃描相同記錄或重復連接相同的表. 例如: SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0020 AND ENAME LIKE ‘S MI TH%’; SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0030 AN
    8. 使用DECODE函數來減少處理時間

      使用DECODE函數可以避免重復掃描相同記錄或重復連接相同的表.

      例如:

    SELECT COUNT(*),SUM(SAL)

    FROM EMP

    WHERE DEPT_NO = 0020

    AND ENAME LIKE ‘SMITH%’;

    SELECT COUNT(*),SUM(SAL)

    FROM EMP

    WHERE DEPT_NO = 0030

    AND ENAME LIKE ‘SMITH%’;

      你可以用DECODE函數高效地得到相同結果.

    SELECT COUNT(DECODE(DEPT_NO,0020,’X’,NULL)) D0020_COUNT,

    COUNT(DECODE(DEPT_NO,0030,’X’,NULL)) D0030_COUNT,

    SUM(DECODE(DEPT_NO,0020,SAL,NULL)) D0020_SAL,

    SUM(DECODE(DEPT_NO,0030,SAL,NULL)) D0030_SAL

    FROM EMP WHERE ENAME LIKE ‘SMITH%’;

      類似的,DECODE函數也可以運用于GROUP BY 和ORDER BY子句中.

      9. 整合簡單,無關聯的數據庫訪問

      如果你有幾個簡單的數據庫查詢語句,你可以把它們整合到一個查詢中(即使它們之間沒有關系).

      例如:

    SELECT NAME

    FROM EMP

    WHERE EMP_NO = 1234;

    SELECT NAME

    FROM DPT

    WHERE DPT_NO = 10 ;

    SELECT NAME

    FROM CAT

    WHERE CAT_TYPE = ‘RD’;

      上面的3個查詢可以被合并成一個:

    SELECT E.NAME , D.NAME , C.NAME

    FROM CAT C , DPT D , EMP E,DUAL X

    WHERE NVL(‘X’,X.DUMMY) = NVL(‘X’,E.ROWID(+))

    AND NVL(‘X’,X.DUMMY) = NVL(‘X’,D.ROWID(+))

    AND NVL(‘X’,X.DUMMY) = NVL(‘X’,C.ROWID(+))

    AND E.EMP_NO(+) = 1234

    AND D.DEPT_NO(+) = 10

    AND C.CAT_TYPE(+) = ‘RD’;

    (譯者按: 雖然采取這種方法,效率得到提高,但是程序的可讀性大大降低,所以讀者 還是要權衡之間的利弊)

      

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>