• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • ORACLE SQL性能優化系列 (七)

    發表于:2008-10-27來源:作者:點擊數: 標簽:SqlsqlSQLoracleOracle
    43. 用WHERE替代ORDER BY ORDER BY 子句只在兩種嚴格的條件下使用索引. ORDER BY中所有的列必須包含在相同的索引中并保持在索引中的排列順序. ORDER BY中所有的列必須定義為非空. WHERE子句使用的索引和ORDER BY子句中所使用的索引不能并列. 例如: 表DEPT包
    43. 用WHERE替代ORDER BY

      ORDER BY 子句只在兩種嚴格的條件下使用索引.

      ORDER BY中所有的列必須包含在相同的索引中并保持在索引中的排列順序.

      ORDER BY中所有的列必須定義為非空.

      WHERE子句使用的索引和ORDER BY子句中所使用的索引不能并列.

      例如:

      表DEPT包含以下列:

    DEPT_CODE PK NOT NULL

    DEPT_DESC NOT NULL

    DEPT_TYPE NULL

      非唯一性的索引(DEPT_TYPE)

      低效: (索引不被使用)

    SELECT DEPT_CODE

    FROM DEPT

    ORDER BY DEPT_TYPE

    EXPLAIN PLAN:

    SORT ORDER BY

    TABLE ACCESS FULL

      高效: (使用索引)

    SELECT DEPT_CODE

    FROM DEPT

    WHERE DEPT_TYPE > 0

    EXPLAIN PLAN:

    TABLE ACCESS BY ROWID ON EMP

    INDEX RANGE SCAN ON DEPT_IDX

      譯者按:ORDER BY 也能使用索引! 這的確是個容易被忽視的知識點. 我們來驗證一下:

    SQL> select * from emp order by empno;

    Execution Plan

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

    0 SELECT STATEMENT Optimizer=CHOOSE

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

    2 1 INDEX (FULL SCAN) OF 'EMPNO' (UNIQUE)

      44. 避免改變索引列的類型

      當比較不同數據類型的數據時, ORACLE自動對列進行簡單的類型轉換.假設 EMPNO是一個數值類型的索引列.

    SELECT …

    FROM EMP

    WHERE EMPNO = ‘123’

      實際上,經過ORACLE類型轉換, 語句轉化為:

    SELECT …

    FROM EMP

    WHERE EMPNO = TO_NUMBER(‘123’)

      幸運的是,類型轉換沒有發生在索引列上,索引的用途沒有被改變.

      現在,假設EMP_TYPE是一個字符類型的索引列.

    SELECT …

    FROM EMP

    WHERE EMP_TYPE = 123

      這個語句被ORACLE轉換為:

    SELECT …

    FROM EMP

    WHERE TO_NUMBER(EMP_TYPE)=123

      因為內部發生的類型轉換, 這個索引將不會被用到!

      譯者按:為了避免ORACLE對你的SQL進行隱式的類型轉換, 最好把類型轉換用顯式表現出來. 注意當字符和數值比較時, ORACLE會優先轉換數值類型到字符類型.

      

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>