2013-10-29 16 views
1


我想比較兩個大的數據集(2個表),每個包含大約10,000,000個記錄:id和其他屬性的散列。正確/最快的方法來比較數據庫中的兩個大數據集

如果id在左側和右側是相同的,但哈希是不同的,我需要比較每個屬性,看看哪一個已經改變。
實現該目標的最佳方法是什麼?

我試過DiffKit,我正在尋找更快的東西。

+1

如果您使用的是SQL Server,那麼通過編寫SQL Server Integration Services(SSIS)包可能會獲得最佳性能。 – criticalfix

+0

我還沒有看清楚它,但是如果'DiffKit'正在執行其在-db中的檢查(即它只是自動寫入語句),那麼在常見情況下你不太可能做得更好。你可以自己寫一個陳述;你有什麼嘗試過自己?這也有助於瞭解更多關於RDBMS,表格和數據集的信息(比如,多少次'id')。 –

+0

當你說每個表包含「其他屬性的散列」時,你的意思是這個值是以列的形式存儲的嗎?是否至少在一個表中索引了組合(id,hash)? –

回答

0

下面的查詢將有一個排,每id其中散列不同,僅包含不同的列(一切是NULL)

SELECT a.id 
    , NULLIF(a.col1,b.col1) t1_col1 
    , NULLIF(b.col1,a.col1) t2_col1 
    , NULLIF(a.col2,b.col2) t1_col2 
    , NULLIF(b.col2,a.col2) t2_col2 
    […] 
FROM table1 a INNER JOIN table2 b 
ON a.id = b.id 
AND a.hash <> b.hash 

上(ID,散列)索引將加快查詢了一下。

+0

謝謝,我會看看它能有多快:) – Orzech

+0

這種做法,但其中一列是對另一個表的引用...我必須以某種方式解決它。十分感謝! – Orzech