2021-12-17
oracle中把多表查询的结果当作一个新表再查询的时候就会很慢,这是为什么?
oracle中把多表查询的结果当作一个新表再查询的时候就会很慢,这是为什么?
我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏
oracle中把多表查询的结果当作一个新表再查询的时候就会很慢,这是为什么?
因为没有把多表查询的结果存储下来,每次去查的时候,还是要从多表里捞数据
评论
有用 1
你得以上是把多表查询当成子查询吗嵌套吗; 还是说创建了一个view; 或者用的with as 子句
当你再去关联其他表的时候,oracle还行需要去重新计算cost,这个时候执行计划就会发生变化,可能表的关联顺序都会发生变化,从而可能导致变慢。
你得这个问题,可能性很多,只能说得看前后得执行计划去分析为什么变慢
评论
有用 0select * from (select * from a, b, c) ab
select * from a, b, c
类似这样的对比
评论
有用 0可以这样,用with t子查询加上 /*+ materialize */ hint, 比如:
with t as (select /*+ materialize */ code,cname from tb_city_basic ) select waybill,cname,work_name from tb_waybill a join t on (ar_ap=t.code) where sysdate -work_date<1;
这样t表的子查询只运行一次,应该可以提速.
评论
有用 0
墨值悬赏