<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    海鷗航際

    JAVA站
    posts - 11, comments - 53, trackbacks - 1, articles - 102
    關鍵字   ORACLE SQL PERFORMANCE TUNING
    出處   http://www.dbasupport.com

     

    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’;

     

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

     

    10.       刪除重復記錄

    最高效的刪除重復記錄方法 ( 因為使用了ROWID)

     

    DELETE FROM EMP E

    WHERE E.ROWID > (SELECT MIN(X.ROWID)

                       FROM EMP X

                       WHERE X.EMP_NO = E.EMP_NO);

     

    11.       TRUNCATE替代DELETE

    當刪除表中的記錄時,在通常情況下, 回滾段(rollback segments ) 用來存放可以被恢復的信息. 如果你沒有COMMIT事務,ORACLE會將數據恢復到刪除之前的狀態(準確地說是

    恢復到執行刪除命令之前的狀況)

     

    而當運用TRUNCATE, 回滾段不再存放任何可被恢復的信息.當命令運行后,數據不能被恢復.因此很少的資源被調用,執行時間也會很短.

     

    (譯者按: TRUNCATE只在刪除全表適用,TRUNCATEDDL不是DML)

     

     

    12.       盡量多使用COMMIT

     

    只要有可能,在程序中盡量多使用COMMIT, 這樣程序的性能得到提高,需求也會因為COMMIT所釋放的資源而減少:

     COMMIT所釋放的資源:

    a.       回滾段上用于恢復數據的信息.

    b.       被程序語句獲得的鎖

    c.       redo log buffer 中的空間

    d.       ORACLE為管理上述3種資源中的內部花費

     

    (譯者按: 在使用COMMIT時必須要注意到事務的完整性,現實中效率和事務完整性往往是魚和熊掌不可得兼)

    主站蜘蛛池模板: 成人无遮挡裸免费视频在线观看 | 亚洲av中文无码乱人伦在线咪咕| 亚洲爆乳无码专区www| 日本精品人妻无码免费大全| 亚洲人成综合在线播放| 日韩中文字幕精品免费一区| 亚洲国产成人资源在线软件| 久久天天躁狠狠躁夜夜免费观看| 亚洲av无码国产综合专区| 无遮免费网站在线入口| 亚洲人成网男女大片在线播放| 美女视频黄的全免费视频| 亚洲jjzzjjzz在线播放| 色www永久免费视频| 特级毛片全部免费播放| 久久久久久A亚洲欧洲AV冫| 久久精品成人免费看| 91亚洲视频在线观看| 女性无套免费网站在线看| 国产亚洲福利一区二区免费看| 亚洲区不卡顿区在线观看| 国产啪精品视频网站免费尤物 | 亚洲男人在线无码视频| 在线看片免费人成视频久网下载 | 亚洲三级高清免费| 全免费a级毛片免费看不卡| 羞羞网站免费观看| 久久精品7亚洲午夜a| 免费精品人在线二线三线区别| 国产精品亚洲精品日韩动图| 亚洲午夜久久久影院| 四虎1515hh永久久免费| 无码色偷偷亚洲国内自拍| 亚洲人成网站在线播放vr| 免费精品国偷自产在线在线| 一级毛片免费在线观看网站| 亚洲成人午夜电影| 亚洲AV伊人久久青青草原| 曰批全过程免费视频网址| 国产成人高清亚洲一区久久| 久久精品亚洲一区二区三区浴池|