Sql-Server

SQL 查找兩個表之間數據差異的最快方法

  • October 17, 2018

我正在嘗試找到最快的方法來查找兩個表之間的差異。第一個表每天從文本文件中填充,第二個表在我們的數據庫中維護。我們需要添加新的或從文本文件中更改的數據。比較是在主鍵上完成的。

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 倍)。但是它有利於進行跨伺服器表差異(最初用於複製方法)。

在此處輸入圖像描述

引用自:https://dba.stackexchange.com/questions/220155