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

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

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

    Vincent.Chan‘s Blog

    常用鏈接

    統(tǒng)計

    積分與排名

    網(wǎng)站

    最新評論

    ORACLE SQL性能優(yōu)化系列 (六)

    ORACLE SQL性能優(yōu)化系列 (六)

    作者: black_snail

     

    關(guān)鍵字 ORACLE PERFORMANCE TUNING SQL

    出處 http://www.dbasupport.com



    20. 用表連接替換EXISTS


    通常來說 , 采用表連接的方式比EXISTS更有效率

    SELECT ENAME

    FROM EMP E

    WHERE EXISTS (SELECT ‘X'

    FROM DEPT

    WHERE DEPT_NO = E.DEPT_NO

    AND DEPT_CAT = ‘A');


    (更高效)

    SELECT ENAME

    FROM DEPT D,EMP E

    WHERE E.DEPT_NO = D.DEPT_NO

    AND DEPT_CAT = ‘A' ;


    (譯者按: 在RBO的情況下,前者的執(zhí)行路徑包括FILTER,后者使用NESTED LOOP)



    21. 用EXISTS替換DISTINCT

    當提交一個包含一對多表信息(比如部門表和雇員表)的查詢時,避免在SELECT子句中使用DISTINCT. 一般可以考慮用EXIST替換


    例如:

    低效:

    SELECT DISTINCT DEPT_NO,DEPT_NAME

    FROM DEPT D,EMP E

    WHERE D.DEPT_NO = E.DEPT_NO

    高效:

    SELECT DEPT_NO,DEPT_NAME

    FROM DEPT D

    WHERE EXISTS ( SELECT ‘X'

    FROM EMP E

    WHERE E.DEPT_NO = D.DEPT_NO);


    EXISTS 使查詢更為迅速,因為RDBMS核心模塊將在子查詢的條件一旦滿足后,立刻返回結(jié)果.



    22. 識別'低效執(zhí)行'的SQL語句


    用下列SQL工具找出低效SQL:

    SELECT EXECUTIONS , DISK_READS, BUFFER_GETS,

    ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio,

    ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run,

    SQL_TEXT

    FROM V$SQLAREA

    WHERE EXECUTIONS>0

    AND BUFFER_GETS > 0

    AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8

    ORDER BY 4 DESC;


    (譯者按: 雖然目前各種關(guān)于SQL優(yōu)化的圖形化工具層出不窮,但是寫出自己的SQL工具來解決問題始終是一個最好的方法)



    23. 使用TKPROF 工具來查詢SQL性能狀態(tài)


    SQL trace 工具收集正在執(zhí)行的SQL的性能狀態(tài)數(shù)據(jù)并記錄到一個跟蹤文件中. 這個跟蹤文件提供了許多有用的信息,例如解析次數(shù).執(zhí)行次數(shù),CPU使用時間等.這些數(shù)據(jù)將可以用來優(yōu)化你的系統(tǒng).


    設(shè)置SQL TRACE在會話級別: 有效


    ALTER SESSION SET SQL_TRACE TRUE


    設(shè)置SQL TRACE 在整個數(shù)據(jù)庫有效仿, 你必須將SQL_TRACE參數(shù)在init.ora中設(shè)為TRUE, USER_DUMP_DEST參數(shù)說明了生成跟蹤文件的目錄


    (譯者按: 這一節(jié)中,作者并沒有提到TKPROF的用法, 對SQL TRACE的用法也不夠準確, 設(shè)置SQL TRACE首先要在init.ora中設(shè)定TIMED_STATISTICS, 這樣才能得到那些重要的時間狀態(tài). 生成的trace文件是不可讀的,所以要用TKPROF工具對其進行轉(zhuǎn)換,TKPROF有許多執(zhí)行參數(shù). 大家可以參考ORACLE手冊來了解具體的配置. )

    posted on 2006-02-25 22:31 Vincent.Chen 閱讀(171) 評論(0)  編輯  收藏 所屬分類: Database

    主站蜘蛛池模板: 精品久久久久久亚洲综合网| 亚洲精品人成电影网| 国精无码欧精品亚洲一区| 亚洲AV日韩AV天堂一区二区三区| 内射干少妇亚洲69XXX| 亚洲国产成AV人天堂无码| 午夜亚洲WWW湿好爽| 国产黄片不卡免费| 十九岁在线观看免费完整版电影| 91网站免费观看| 日日AV拍夜夜添久久免费| 在线亚洲精品福利网址导航| 亚洲成人中文字幕| 亚洲欧美日韩综合俺去了| 一区二区三区免费精品视频| 免费A级毛片无码A∨| 天天摸天天操免费播放小视频| 亚洲一级片免费看| 亚洲福利视频网址| 亚洲欧美在线x视频| 久久青草国产免费观看| 四虎在线免费播放| 亚洲中文字幕在线观看| 午夜不卡AV免费| 中文字幕在线免费播放| 国色精品卡一卡2卡3卡4卡免费| 亚洲成A人片77777国产| 亚洲天天在线日亚洲洲精| 亚洲乱色伦图片区小说| 国精产品一区一区三区免费视频| 国产在线观看免费观看不卡| 亚洲婷婷国产精品电影人久久| 亚洲美女视频网站| 猫咪免费观看人成网站在线| 5555在线播放免费播放| 五月婷婷亚洲综合| 亚洲中字慕日产2021| 久久不见久久见免费影院www日本| 国产无人区码卡二卡三卡免费| 激情97综合亚洲色婷婷五| 亚洲一级特黄特黄的大片 |