• λ我爱Aspx >> C#.Net >> ORACLE优化器 _数据库技巧
  • ORACLE优化器 _数据库技巧

  • :aspxer  Դ:internet  :2007-4-28 23:46:48  ؼ:数据库,数据
  • 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是唯一性索引,但是由于它所做的是范围比较, 等级要比非唯一性索引的等式比较低

    Ҷƪл˵?
  • һƪWindows 2000下优化Oracle9i性能_数据库技巧
    һƪ优化Oracle库表设计的若干方法_数据库技巧