您的位置:首页 > 数据库

利用sql改写去掉执行计划中的filter

2016-10-28 14:52 225 查看
由于涉及到一下敏感的数据,所以只能用试验环境演示,情况如下:

create table test as  select * from dba_objects ;

create table test1 as  select * from dba_objects ;

select *

  from (select *

          from test b

         where created = (select max(created)

                            from test1 a

                           where a.object_name = b.object_name)

           and last_ddl_time > sysdate) a,

       (select *

          from test b

         where created = (select max(created)

                            from test1 a

                           where a.object_name = b.object_name)

           and last_ddl_time < sysdate) b

 where a.object_id = b.object_id;

执行计划如下:

 


select  *  from (select *

           from test b,

                (select object_name, max(created) created

                   from test1 a

                  group by object_name) a

          where a.created = b.created

            and a.object_name = b.object_name

            and last_ddl_time > sysdate) a,

        (select *

           from test b,

                (select object_name, max(created) created

                   from test1 a

                  group by object_name) a

          where a.created = b.created

            and a.object_name = b.object_name

            and last_ddl_time > sysdate) b

 where a.object_id = b.object_id;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: