求学资讯 oracle认证 提问
oracle认证 > 性能调优

Oracle性能调优:30个Oracle语句优化规则详解9

来源:用户上传 上传用户:zhongzhanen 发布时间:2018-03-22

导读:
想要第一时间获得Oracle认证考试报考信息,想要充分利用各种精华资讯资源备考,想要海量高质量、高含金量的习题练习,关注“求学快递网”公众号,你不能错过的考试利器!

  等式比较和范围比较

  当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 ptimizer=CHOOSE

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

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

  虽然EMPNO是唯,一性索引,但是由于它所做的是范围比较,等级要比非唯,一性索引的等式比较低!

声明:本站为免费网络服务提供商,网站所有信息均为用户自行发布并由用户承担相应法律责任,本站不对其真实性及合法性负责,如涉及侵权或者信息违法,请你及时与本站联系删除。

阅读 1214 举报

相关推荐
评论0

当前没有评论内容

发表评论 0条评论
58
微博
QQ
QQ空间
微信
取消