<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

    20.       用表連接替換EXISTS

     

         通常來(lái)說(shuō) , 采用表連接的方式比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

    當(dāng)提交一個(gè)包含一對(duì)多表信息(比如部門(mén)表和雇員表)的查詢時(shí),避免在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 使查詢更為迅速,因?yàn)?/SPAN>RDBMS核心模塊將在子查詢的條件一旦滿足后,立刻返回結(jié)果.

     

    22.       識(shí)別低效執(zhí)行SQL語(yǔ)句

     

    用下列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)化的圖形化工具層出不窮,但是寫(xiě)出自己的SQL工具來(lái)解決問(wèn)題始終是一個(gè)最好的方法)

     

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

     

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

     

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

     

      ALTER SESSION SET SQL_TRACE TRUE

     

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

     

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

    主站蜘蛛池模板: 亚洲午夜精品一级在线播放放| 亚洲高清国产拍精品熟女| 免费大黄网站在线观| 国产成人精品久久免费动漫| 精品人妻系列无码人妻免费视频 | 亚洲爆乳大丰满无码专区| 亚洲视频在线观看不卡| 亚洲精品色午夜无码专区日韩| 日本免费一二区在线电影| 2021免费日韩视频网| 99视频免费播放| 水蜜桃视频在线观看免费播放高清| 日本系列1页亚洲系列| 456亚洲人成在线播放网站| 青青草原精品国产亚洲av| 亚洲中文字幕无码中文字在线| 免费h黄肉动漫在线观看 | 亚洲一区AV无码少妇电影| 亚洲欧洲在线观看| 日韩亚洲人成在线综合日本| 亚洲一区二区三区在线观看精品中文| 可以免费观看一级毛片黄a| 免费无码不卡视频在线观看| 大地资源免费更新在线播放| 日本XXX黄区免费看| 国产妇乱子伦视频免费| 四虎在线最新永久免费| 91频在线观看免费大全| 成人免费福利视频| 希望影院高清免费观看视频| 国产精品成人免费福利| 很黄很黄的网站免费的| 免费国产黄线在线观看| 成人免费无毒在线观看网站| 久久精品免费一区二区喷潮 | 亚洲卡一卡二卡乱码新区| 亚洲一级免费毛片| 亚洲中文字幕久久精品无码A| 亚洲乱妇老熟女爽到高潮的片| 亚洲色成人网站WWW永久四虎| 亚洲成在人线aⅴ免费毛片|