暂无图片
oracle中把多表查询的结果当作一个新表再查询的时候就会很慢,这是为什么?
我来答
分享
仓管员
2021-12-17
oracle中把多表查询的结果当作一个新表再查询的时候就会很慢,这是为什么?

oracle中把多表查询的结果当作一个新表再查询的时候就会很慢,这是为什么?

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
DarkAthena

因为没有把多表查询的结果存储下来,每次去查的时候,还是要从多表里捞数据

暂无图片 评论
暂无图片 有用 1
暂无图片
仓管员
题主
2021-12-17
明白了 ,原来是这样啊,3Q
杨曾瑞

你得以上是把多表查询当成子查询吗嵌套吗;   还是说创建了一个view;   或者用的with as 子句

当你再去关联其他表的时候,oracle还行需要去重新计算cost,这个时候执行计划就会发生变化,可能表的关联顺序都会发生变化,从而可能导致变慢。

你得这个问题,可能性很多,只能说得看前后得执行计划去分析为什么变慢

暂无图片 评论
暂无图片 有用 0
仓管员

select * from (select * from a, b, c) ab
select * from a, b, c
类似这样的对比

暂无图片 评论
暂无图片 有用 0
Thomas

可以这样,用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
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏