ITPub博客

首页 > 数据库 > Oracle > 避免不必要的排序(二)

避免不必要的排序(二)

原创 Oracle 作者:luisedalian 时间:2014-01-17 14:23:43 0 删除 编辑

 案例2

确认可以使用union all取代union,从而可以避免排序操作。

 案例3

点击(此处)折叠或打开

  1. DROP TABLE t;
  2. CREATE TABLE t AS SELECT * FROM dba_objects;
  3. CREATE INDEX idx_t ON t(owner, object_id);

  4. SET AUTOTRACE TRACEONLY EXPLAIN
  5. ALTER TABLE t MODIFY owner NOT NULL;

  6. --执行语句
  7. SELECT /*+ index(a, idx_t) */ * FROM t a ORDER BY owner DESC, object_type ASC;

  8. Elapsed: 00:00:00.01

  9. Execution Plan
  10. ----------------------------------------------------------
  11. Plan hash value: 332749522


点击(此处)折叠或打开

  1. --重新定义索引
  2. DROP INDEX idx_t;
  3. CREATE INDEX idx_t ON t(owner DESC, object_type ASC);

  4. --再次执行语句,排序操作消失
  5. SELECT /*+ index(a, idx_t) */ * FROM t a ORDER BY owner DESC, object_type ASC;

  6. Elapsed: 00:00:00.02

  7. Execution Plan
  8. ----------------------------------------------------------
  9. Plan hash value: 112249094



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1072154/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    5649665