<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

    13.       計(jì)算記錄條數(shù)

         和一般的觀點(diǎn)相反, count(*) count(1)稍快 , 當(dāng)然如果可以通過索引檢索,對(duì)索引列的計(jì)數(shù)仍舊是最快的. 例如 COUNT(EMPNO)

     

    (譯者按: CSDN論壇中,曾經(jīng)對(duì)此有過相當(dāng)熱烈的討論, 作者的觀點(diǎn)并不十分準(zhǔn)確,通過實(shí)際的測(cè)試,上述三種方法并沒有顯著的性能差別)

     

    14.       Where子句替換HAVING子句

     

         避免使用HAVING子句, HAVING 只會(huì)在檢索出所有記錄之后才對(duì)結(jié)果集進(jìn)行過濾. 這個(gè)處理需要排序,總計(jì)等操作. 如果能通過WHERE子句限制記錄的數(shù)目,那就能減少這方面的開銷.

     

    例如:

     

         低效:

         SELECT REGIONAVG(LOG_SIZE)

         FROM LOCATION

         GROUP BY REGION

         HAVING REGION REGION != ‘SYDNEY

         AND REGION != ‘PERTH

     

         高效

         SELECT REGIONAVG(LOG_SIZE)

         FROM LOCATION

         WHERE REGION REGION != ‘SYDNEY

         AND REGION != ‘PERTH

         GROUP BY REGION

    (譯者按: HAVING 中的條件一般用于對(duì)一些集合函數(shù)的比較,COUNT() 等等. 除此而外,一般的條件應(yīng)該寫在WHERE子句中)

     

    15.       減少對(duì)表的查詢

    在含有子查詢的SQL語句中,要特別注意減少對(duì)表的查詢.

      

    例如:

         低效

              SELECT TAB_NAME

              FROM TABLES

              WHERE TAB_NAME = ( SELECT TAB_NAME

                                    FROM TAB_COLUMNS

                                    WHERE VERSION = 604)

              AND DB_VER= ( SELECT DB_VER

                               FROM TAB_COLUMNS

                               WHERE VERSION = 604)

     

         高效

              SELECT TAB_NAME

              FROM TABLES

              WHERE  (TAB_NAME,DB_VER)

     = ( SELECT TAB_NAME,DB_VER)

                       FROM TAB_COLUMNS

                       WHERE VERSION = 604)

     

         Update 多個(gè)Column 例子:

         低效:

               UPDATE EMP

               SET EMP_CAT = (SELECT MAX(CATEGORY) FROM EMP_CATEGORIES),

                  SAL_RANGE = (SELECT MAX(SAL_RANGE) FROM EMP_CATEGORIES)

               WHERE EMP_DEPT = 0020;

     

         高效:

               UPDATE EMP

               SET (EMP_CAT, SAL_RANGE)

     = (SELECT MAX(CATEGORY) , MAX(SAL_RANGE)

     FROM EMP_CATEGORIES)

               WHERE EMP_DEPT = 0020;

     

           

    16.       通過內(nèi)部函數(shù)提高SQL效率.

     

         SELECT H.EMPNO,E.ENAME,H.HIST_TYPE,T.TYPE_DESC,COUNT(*)

         FROM HISTORY_TYPE T,EMP E,EMP_HISTORY H

         WHERE H.EMPNO = E.EMPNO

    AND H.HIST_TYPE = T.HIST_TYPE

    GROUP BY H.EMPNO,E.ENAME,H.HIST_TYPE,T.TYPE_DESC;

     

    通過調(diào)用下面的函數(shù)可以提高效率.

    FUNCTION LOOKUP_HIST_TYPE(TYP IN NUMBER) RETURN VARCHAR2

    AS

        TDESC VARCHAR2(30);

        CURSOR C1 IS 

            SELECT TYPE_DESC

            FROM HISTORY_TYPE

            WHERE HIST_TYPE = TYP;

    BEGIN

        OPEN C1;

        FETCH C1 INTO TDESC;

        CLOSE C1;

        RETURN (NVL(TDESC,’?’));

    END;

     

    FUNCTION LOOKUP_EMP(EMP IN NUMBER) RETURN VARCHAR2

    AS

        ENAME VARCHAR2(30);

        CURSOR C1 IS 

            SELECT ENAME

            FROM EMP

            WHERE EMPNO=EMP;

    BEGIN

        OPEN C1;

        FETCH C1 INTO ENAME;

        CLOSE C1;

        RETURN (NVL(ENAME,’?’));

    END;

     

    SELECT H.EMPNO,LOOKUP_EMP(H.EMPNO),

    H.HIST_TYPE,LOOKUP_HIST_TYPE(H.HIST_TYPE),COUNT(*)

    FROM EMP_HISTORY H

    GROUP BY H.EMPNO , H.HIST_TYPE;

     

    (譯者按: 經(jīng)常在論壇中看到如 能不能用一個(gè)SQL寫出….’ 的貼子, 殊不知復(fù)雜的SQL往往犧牲了執(zhí)行效率. 能夠掌握上面的運(yùn)用函數(shù)解決問題的方法在實(shí)際工作中是非常有意義的)

     

     (待續(xù))


    主站蜘蛛池模板: 国产精品免费观看| 亚洲日产无码中文字幕| 国产亚洲欧美在线观看| 亚洲成A人片在线观看无码3D | 免费人成视网站在线观看不卡| 亚洲日韩在线观看免费视频| 亚洲精品中文字幕乱码| 免费一级做a爰片性色毛片| 成全视频在线观看免费| 久操免费在线观看| 热久久精品免费视频| 亚洲日产2021三区| 精品国产免费观看| a视频在线免费观看| 亚洲午夜无码久久久久小说 | 午夜高清免费在线观看| 成人av片无码免费天天看| 久久精品国产亚洲av麻豆图片| 亚洲综合色区在线观看| 黄页网站免费观看| 免费无码又爽又刺激网站| 亚洲欧洲av综合色无码| 亚洲AV第一页国产精品| 又粗又硬免费毛片| 和日本免费不卡在线v| 成人精品一区二区三区不卡免费看| 亚洲AV日韩综合一区尤物| 久久精品国产亚洲av麻| 亚洲国产精品自产在线播放| 久久久久久免费视频| 日韩精品免费在线视频| 五月天婷婷精品免费视频| 亚洲日韩一区精品射精| 亚洲精品亚洲人成在线观看麻豆| 亚洲人成人一区二区三区| 免费真实播放国产乱子伦| 久久久久免费看黄A片APP| 91香蕉国产线观看免费全集| 在线免费播放一级毛片| 三年片在线观看免费观看大全中国| 亚洲伦理中文字幕|