Sql-Server
SQL 查找兩個表之間數據差異的最快方法
我正在嘗試找到最快的方法來查找兩個表之間的差異。第一個表每天從文本文件中填充,第二個表在我們的數據庫中維護。我們需要添加新的或從文本文件中更改的數據。比較是在主鍵上完成的。
create table dbo.CustomerTransaction ( CustomerTransactionId int primary key, CustomerName varchar(50), ProductName varchar(50), QuantityBought int )
所以行值表1:(1,‘Bob’,‘Table’,8)與表2相同:(1,‘Bob’,‘Table’,8)
這些是不同的 (1,‘Bob’,‘Table’,8) , (1,‘Bob’,‘Chair’,8) ,在主鍵上不同。
我看到很多討論方法的文章,包括 Left Join、Except、tablediff、Visual Studio DataComparison、Union 組。
但是,沒有人談論性能/速度。哪種是最快的內部算法方式?我猜它是 TableDiff Utility,它是專門為此目的設計的 SQL 工具。
我們無法訪問舊文本文件系統中的 CDC,因此我們每天都將所有新數據提取到 SQL Server 中,並與以前的數據進行比較。我們正在尋找增量負載值,並將其放入 Kimball 數據倉庫。
在我們進行比較時,這兩個表都沒有被積極使用。
如何找出 2 個 SQL 表之間的內容差異並生成同步 SQL https://stackoverflow.com/questions/4602083/sql-compare-data-from-two-tables
沒有確定的答案。David Lozinski 在下面進行了一項研究,發現不同的方法成功取決於行數、統計數據和基數。
我有機會測試 tablediff 實用程序,由於某種原因,與下面的 T-SQL 方法相比,它的執行速度要慢得多(慢 2-3 倍)。但是它有利於進行跨伺服器表差異(最初用於複製方法)。