<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時必須要注意到事務的完整性,現實中效率和事務完整性往往是魚和熊掌不可得兼)

    主站蜘蛛池模板: 亚洲国产精品高清久久久| 亚洲成?Ⅴ人在线观看无码| 亚洲视频在线观看一区| 两个人看www免费视频| 中国亚洲女人69内射少妇| 国产精品hd免费观看| 色吊丝性永久免费看码| 88av免费观看| 亚洲色偷偷偷网站色偷一区| 日本视频在线观看永久免费| 久久亚洲国产精品成人AV秋霞| 精品无码国产污污污免费网站| 亚洲欧洲自拍拍偷综合| 国产精品成人免费视频网站京东| 亚洲香蕉在线观看| 四虎影院免费在线播放| 黄网站在线播放视频免费观看| 亚洲精品国产高清嫩草影院| a级男女仿爱免费视频| 亚洲精品自产拍在线观看动漫| 国产精品免费网站| 亚洲午夜无码久久久久小说 | 免费在线观看亚洲| 亚洲日本va午夜中文字幕久久| 中文字幕在线免费看| 久久久久久亚洲精品| 无码专区永久免费AV网站| 国产成人亚洲综合无| 最新亚洲成av人免费看| 最近2022中文字幕免费视频| 亚洲精品乱码久久久久蜜桃| 亚洲中文字幕无码爆乳av中文| 免费人成视频在线观看网站| 亚洲色偷偷偷综合网| 国产精品亚洲玖玖玖在线观看| 最近免费中文字幕mv电影| 国产精品亚洲一区二区在线观看| 亚洲精品乱码久久久久66| 又黄又爽又成人免费视频| 污污污视频在线免费观看| 亚洲人成黄网在线观看|