sql连接表到底是在联合之前还是之后?

n3ipq98p  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(279)

我有三张table。2个相似。

table1/table2
col1 string
col2 string
col3 integer

table3
51 columns. strings, ints, doubles, dates

我很好奇哪个更快。

with s1 as(
  Select *
  from table1
  union all
  Select *
  from table2
)
select *
from s1
inner join table3 t3
on s1.col1 = t3.col4

with s1 as(
  Select *
  from table1 t1
  inner join table3
  on t1.col1 = t3.col4
),s2 as(
  Select *
  from table2 t2
  inner join table3
  on t2.col1 = t3.col4
)
Select *
from s1
union all
Select *
from s2

表没有分区或索引。我想知道这对双方都有什么作用
Hive和Oracle。
编辑02.02.2017我试着在Hive中检查它。差不多在同一时间开始的。

union before join
Time taken: 539.593 seconds

jbu
Time taken: 603.071 seconds

不幸的是,我决定在几个小时后检查结果

jbu
Time taken: 308.205 seconds

结果因集群的繁忙程度而异((

u1ehiz5o

u1ehiz5o1#

我唯一能看到的是第二个查询扫描了表2两次。但没有任何执行计划的信息,这只是猜测。正如其他人所说,为什么不试验,让我们知道;也许可以分享执行计划!

m2xkgtsf

m2xkgtsf2#

绝对第一个更快。 with s1 as( Select * from table1 union all Select * from table2 ) select * from s1 inner join table3 t3 on s1.col1 = t3.col4

相关问题