2014-01-11 35 views
1

我有兩個配置單元表T1和T2。 T1是由列date1,hour1分區的外部表。它還有另一個日期列date2(與date1不同)。快速進行分區配置單元表的增量更新

T2是由date2分區的配置單元表。

我會每隔一小時遞增一次數據,我可以很容易地將它添加到帶有動態分區的表T1中。

我想要一個有效的方法來從T1中選擇數據並逐步將數據加載到T2中,並由date2進行分區。

這是我在做什麼現在

insert into T2 

select 
    *, 
    date2 
from 

    (
     select * from T1 where date1="a constant date" and hour1 = "a constant hour" 
    ) T1SubQuery 
left outer join 
    T2 
on 
    T1SubQuery.idColumn = T2.idColumn 
where 
    T2.idColumn is null 

我做一個左外連接和「裏T1.idColumn爲空」模擬「其中沒有」。我這樣做是爲了避免重複的數據,查詢可以運行多次,我希望它是冪等的。

問題

  1. 從T2分區將在此查詢中使用?我怎樣才能最小化使用的分區數量?

  2. 做這種冪等增量數據加載的最有效方法是什麼?

回答

0
  1. 所有分區應在T2,因爲會影響您的WHERE條件不篩選出來

  2. 做這方面的一個比較典型的方式是建立在T2對應於新的分區新分區在T1中,並將t1中的數據插入到這些分區中的t2中。您使用的策略不是爲速度而構建的,而是爲了從T1中找到丟失的數據並插入它們的專門目的。這可能不是執行大容量/批量插入的最佳方式。