<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
     

    27.       基礎(chǔ)表的選擇

     

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

    如果你使用的是CBO (COST BASED OPTIMIZER),優(yōu)化器會(huì)檢查SQL語句中的每個(gè)表的物理大小,索引的狀態(tài),然后選用花費(fèi)最低的執(zhí)行路徑.

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

    舉例:

         SELECT A.NAME , B.MANAGER

         FROM WORKER A,

                 LODGING B

         WHERE A.LODGING = B.LODING;

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

     

    28.       多個(gè)平等的索引

    當(dāng)SQL語句的執(zhí)行路徑可以使用分布在多個(gè)表上的多個(gè)索引時(shí), ORACLE會(huì)同時(shí)使用多個(gè)索引并在運(yùn)行時(shí)對(duì)它們的記錄進(jìn)行合并, 檢索出僅對(duì)全部索引有效的記錄.

    ORACLE選擇執(zhí)行路徑時(shí),唯一性索引的等級(jí)高于非唯一性索引. 然而這個(gè)規(guī)則只有

    當(dāng)WHERE子句中索引列和常量比較才有效.如果索引列和其他表的索引類相比較. 這種子句在優(yōu)化器中的等級(jí)是非常低的.

    如果不同表中兩個(gè)想同等級(jí)的索引將被引用, FROM子句中表的順序?qū)Q定哪個(gè)會(huì)被率先使用. FROM子句中最后的表的索引將有最高的優(yōu)先級(jí).

    如果相同表中兩個(gè)想同等級(jí)的索引將被引用, WHERE子句中最先被引用的索引將有最高的優(yōu)先級(jí).

    舉例:

         DEPTNO上有一個(gè)非唯一性索引,EMP_CAT也有一個(gè)非唯一性索引.

         SELECT ENAME,

         FROM EMP

         WHERE DEPT_NO = 20

         AND EMP_CAT = ‘A’;

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

     

    TABLE ACCESS BY ROWID ON EMP

        AND-EQUAL

            INDEX RANGE SCAN ON DEPT_IDX

            INDEX RANGE SCAN ON CAT_IDX

     

    29.        等式比較和范圍比較

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

     

         舉例:

         DEPTNO上有一個(gè)非唯一性索引,EMP_CAT也有一個(gè)非唯一性索引.

         SELECT ENAME

         FROM EMP

         WHERE DEPTNO > 20

         AND EMP_CAT = ‘A’;

       

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

         TABLE ACCESS BY ROWID ON EMP

               INDEX RANGE SCAN ON CAT_IDX

     

    30.       不明確的索引等級(jí)

     

    當(dāng)ORACLE無法判斷索引的等級(jí)高低差別,優(yōu)化器將只使用一個(gè)索引,它就是在WHERE子句中被列在最前面的.

         舉例:

         DEPTNO上有一個(gè)非唯一性索引,EMP_CAT也有一個(gè)非唯一性索引.

        

         SELECT ENAME

         FROM EMP

         WHERE DEPTNO > 20

         AND EMP_CAT > ‘A’;

     

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

        

         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是唯一性索引,但是由于它所做的是范圍比較, 等級(jí)要比非唯一性索引的等式比較低!

     

     


    主站蜘蛛池模板: 日本亚洲欧美色视频在线播放| 精品亚洲成A人无码成A在线观看| 国产精品亚洲va在线观看| 最近免费中文字幕大全免费版视频| 亚洲自偷自偷在线制服| 黄桃AV无码免费一区二区三区| 久久亚洲国产精品五月天婷| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 亚洲精品天堂无码中文字幕| 99久久99久久精品免费看蜜桃| 亚洲黄色一级毛片| 2020因为爱你带字幕免费观看全集 | 日本一区二区在线免费观看| 免费大黄网站在线看| 无人视频在线观看免费播放影院| 免费国产成人高清视频网站| 日本在线观看免费高清| 久久亚洲国产成人影院网站| 怡红院免费的全部视频| 黑人精品videos亚洲人| 久操免费在线观看| 亚洲女人初试黑人巨高清| 99在线视频免费观看视频| 亚洲精品无码专区在线| 日韩精品免费一区二区三区| 视频免费1区二区三区| 亚洲精品国偷自产在线| 18禁止看的免费污网站| 久久亚洲精品国产亚洲老地址 | 亚洲精品亚洲人成在线观看下载| 一级毛片不卡免费看老司机| 九月丁香婷婷亚洲综合色| 最近免费视频中文字幕大全| 久久综合久久综合亚洲| 免费一区二区三区四区五区| 精品在线免费观看| 精品亚洲成在人线AV无码| 亚洲色一色噜一噜噜噜| 日本一卡精品视频免费| 亚洲乱码日产精品一二三| 亚洲综合av永久无码精品一区二区|