我需要在一个查询中连接多个表,然后覆盖另一个表。
焦点/驱动程序表:事实(巨大,id上有扣)
联接表1:t1(大,但比事实小,在id上扣起来,在fact.id上用事实联接)
联接表2:t2(大,但小于t1,与fact on fact.id2联接)
连接表3:t3(参考表,小到可以放入内存,连接到事实)
连接表4:t4(参考表,小到可以放入内存,连接到事实)
连接表5:t5(参考表,小到可以放入内存,连接到事实)
现在,我想知道为了获得最佳性能,表的连接顺序是什么。
我的想法和问题:
我想先把事实和t1结合起来,因为两者都是扣起来的。但是,首先连接两个大表是一个好主意吗?因为这个巨大的连接数据集将与较小的表连接(这意味着需要在Map器和还原器之间移动更多的数据),还是我们应该首先与较小的表连接?但是,如果我们用较小的表连接这个事实,我将无法用t1执行bucket连接,对吧(因为连接的数据集将不会被绑定)。
暂无答案!
目前还没有任何答案,快来回答吧!