求助:表连接的笛卡尔积问题(oracle )

物润声无 2017-01-23 10:30:33
有三张表:A(a1, a2, a3); B(a1,b1,b2); C(b2, c1,c2)

select A.a1, B.b1
from A
join B on A.a1 = B.a1
join C on B.b2 = C.c2

这条语句的具体执行过程是怎样的? 和 V$instance视图中parallel 的值有有关吗? join C的时候会不会出现笛卡尔积?

java 中有求表达式中一共出现多少个字符串的问题: String a = "aa"+ "bb" + "cc",

在sql中可不可以也这样问:上面的语句在执行过程中一共出现过多少张表或临时表?
...全文
420 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
POM_24 2017-01-24
  • 打赏
  • 举报
回复
语句不能进一步优化了。 on A.a1 = B.a1 on B.b2 = C.c2 关联字段上A.a1,B.a1, B.b2 , C.c2 创建有索引,效率会显著提高。
物润声无 2017-01-24
  • 打赏
  • 举报
回复
早上好

引用 1 楼 jdsnhan 的回复:
1、这条语句与V$instance视图中parallel 没有关系
2、A/B/C建立起了关联,不会出现笛卡尔乘积。
3、不会出现临时表


如果表中的数据量很大,每张表有一亿条呢? 下面的这条语句有办法可以优化吗?
表 D(a1, b1)

insert into D
select A.a1, B.b1
from A
join B on A.a1 = B.a1
join C on B.b2 = C.c2



jdsnhan 2017-01-24
  • 打赏
  • 举报
回复
1、这条语句与V$instance视图中parallel 没有关系 2、A/B/C建立起了关联,不会出现笛卡尔乘积。 3、不会出现临时表

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧