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

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

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

    Vincent.Chan‘s Blog

    常用鏈接

    統計

    積分與排名

    網站

    最新評論

    ORACLE SQL性能優化系列 (九)

    ORACLE SQL性能優化系列 (九)

    作者: black_snail

     

    關鍵字 ORACLE PL/SQL TUNING PERFORMANCE

    出處 http://www.dbasupport.com



    27. 基礎表的選擇


    基礎表(Driving Table)是指被最先訪問的表(通常以全表掃描的方式被訪問). 根據優化器的不同, SQL語句中基礎表的選擇是不一樣的.

    如果你使用的是CBO (COST BASED OPTIMIZER),優化器會檢查SQL語句中的每個表的物理大小,索引的狀態,然后選用花費最低的執行路徑.

    如果你用RBO (RULE BASED OPTIMIZER) , 并且所有的連接條件都有索引對應, 在這種情況下, 基礎表就是FROM 子句中列在最后的那個表.

    舉例:

    SELECT A.NAME , B.MANAGER

    FROM WORKER A,

    LODGING B

    WHERE A.LODGING = B.LODING;

    由于LODGING表的LODING列上有一個索引, 而且WORKER表中沒有相比較的索引, WORKER表將被作為查詢中的基礎表.



    28. 多個平等的索引

    當SQL語句的執行路徑可以使用分布在多個表上的多個索引時, ORACLE會同時使用多個索引并在運行時對它們的記錄進行合并, 檢索出僅對全部索引有效的記錄.

    在ORACLE選擇執行路徑時,唯一性索引的等級高于非唯一性索引. 然而這個規則只有

    當WHERE子句中索引列和常量比較才有效.如果索引列和其他表的索引類相比較. 這種子句在優化器中的等級是非常低的.

    如果不同表中兩個想同等級的索引將被引用, FROM子句中表的順序將決定哪個會被率先使用. FROM子句中最后的表的索引將有最高的優先級.

    如果相同表中兩個想同等級的索引將被引用, WHERE子句中最先被引用的索引將有最高的優先級.

    舉例:

    DEPTNO上有一個非唯一性索引,EMP_CAT也有一個非唯一性索引.

    SELECT ENAME,

    FROM EMP

    WHERE DEPT_NO = 20

    AND EMP_CAT = ‘A';

    這里,DEPTNO索引將被最先檢索,然后同EMP_CAT索引檢索出的記錄進行合并. 執行路徑如下:



    TABLE ACCESS BY ROWID ON EMP

    AND-EQUAL

    INDEX RANGE SCAN ON DEPT_IDX

    INDEX RANGE SCAN ON CAT_IDX



    29. 等式比較和范圍比較

    當WHERE子句中有索引列, ORACLE不能合并它們,ORACLE將用范圍比較.


    舉例:

    DEPTNO上有一個非唯一性索引,EMP_CAT也有一個非唯一性索引.

    SELECT ENAME

    FROM EMP

    WHERE DEPTNO > 20

    AND EMP_CAT = ‘A';



    這里只有EMP_CAT索引被用到,然后所有的記錄將逐條與DEPTNO條件進行比較. 執行路徑如下:

    TABLE ACCESS BY ROWID ON EMP

    INDEX RANGE SCAN ON CAT_IDX



    30. 不明確的索引等級


    當ORACLE無法判斷索引的等級高低差別,優化器將只使用一個索引,它就是在WHERE子句中被列在最前面的.

    舉例:

    DEPTNO上有一個非唯一性索引,EMP_CAT也有一個非唯一性索引.


    SELECT ENAME

    FROM EMP

    WHERE DEPTNO > 20

    AND EMP_CAT > ‘A';


    這里, ORACLE只用到了DEPT_NO索引. 執行路徑如下:


    TABLE ACCESS BY ROWID ON EMP

    INDEX RANGE SCAN ON DEPT_IDX


    譯者按:

    我們來試一下以下這種情況:

    SQL> select index_name, uniqueness from user_indexes where table_name = 'EMP';


    INDEX_NAME UNIQUENES

    ------------------------------ ---------

    EMPNO UNIQUE

    EMPTYPE NONUNIQUE


    SQL> select * from emp where empno >= 2 and emp_type = 'A' ;


    no rows selected



    Execution Plan

    ----------------------------------------------------------

    0 SELECT STATEMENT Optimizer=CHOOSE

    1 0 TABLE ACCESS (BY INDEX ROWID) OF 'EMP'

    2 1 INDEX (RANGE SCAN) OF 'EMPTYPE' (NON-UNIQUE)


    雖然EMPNO是唯一性索引,但是由于它所做的是范圍比較, 等級要比非唯一性索引的等式比較低!

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

    主站蜘蛛池模板: 免费涩涩在线视频网| 国产成人久久AV免费| 精品久久久久久久免费加勒比| 亚洲白色白色永久观看| 国产精品区免费视频| 亚洲男人的天堂在线播放| 国产一区二区免费| 亚洲AV第一页国产精品| 免费国产成人18在线观看| 亚洲国产精品自在在线观看| 最近免费2019中文字幕大全| 亚洲激情视频网站| 女人18毛片水真多免费播放| 青青青亚洲精品国产| 亚洲精品NV久久久久久久久久| 亚洲中文字幕无码久久2020| 曰批全过程免费视频播放网站 | 成熟女人特级毛片www免费| 亚洲精品二三区伊人久久| 成年女人午夜毛片免费看| 美女视频黄a视频全免费网站一区| 亚洲国产综合久久天堂| 国产午夜不卡AV免费| 亚洲中文无码av永久| 国产精品免费看久久久无码| 一级黄色免费网站| 亚洲人成电影在在线观看网色 | 女人被免费视频网站| 黄网站色视频免费看无下截| 国产日韩亚洲大尺度高清| 在线观看永久免费| 羞羞漫画页面免费入口欢迎你| 国产亚洲精品岁国产微拍精品| 97热久久免费频精品99| 国产亚洲福利一区二区免费看 | 亚洲avav天堂av在线网爱情| heyzo亚洲精品日韩| 免费无遮挡无码永久视频| 亚洲AV无码片一区二区三区 | 污视频网站免费观看| 99精品视频免费在线观看|