我有三张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
结果因集群的繁忙程度而异((
2条答案
按热度按时间u1ehiz5o1#
我唯一能看到的是第二个查询扫描了表2两次。但没有任何执行计划的信息,这只是猜测。正如其他人所说,为什么不试验,让我们知道;也许可以分享执行计划!
m2xkgtsf2#
绝对第一个更快。
with s1 as( Select * from table1 union all Select * from table2 ) select * from s1 inner join table3 t3 on s1.col1 = t3.col4