ITPub博客

首页 > 数据库 > Oracle > 设计开发时慎重决定列是否为空(二)

设计开发时慎重决定列是否为空(二)

原创 Oracle 作者:luisedalian 时间:2014-01-18 06:51:26 0 删除 编辑

 案例2

NOT IN的典型查询中NULL值会限制unnest转换,导致优化器无法选择ANTI算法,而走了低效的filter

(11g中,二者选择的执行计划是一样的)

点击(此处)折叠或打开

  1. DROP TABLE t1;
  2. CREATE TABLE t1 as SELECT * FROM user_objects;
  3. DROP TABLE t2;
  4. CREATE TABLE t2 AS SELECT * FROM user_objects;
  5. SET timing ON
  6. SET autotrace traceonly
  7. SELECT * FROM t1 WHERE object_id NOT IN (SELECT object_id FROM t2 group by object_id, object_name having count(*) > 1);

  8. 15 rows selected.

  9. Elapsed: 00:00:00.06

  10. Execution Plan
  11. ----------------------------------------------------------
  12. Plan hash value: 2948349348


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

下一篇: 课程实践(一)
请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    5642205