データを一時的に一括挿入するカスタム インポート ツールがあります (421776 行)。その後、ツールは不明な行をターゲット テーブルに挿入し、ハッシュ キー (2 つの列の組み合わせ) に基づいて既存の行を更新します。ターゲット データベースの行数はほぼ同じです。更新クエリは次のようになります (更新列が約 20 少ない)
update targetTable set
theDB.dbo.targetTable.code=temp.code,
theDB.dbo.targetTable.name=temp.name,
from [tempDB].[dbo].[targettable] as temp
where theDB.dbo.targetTable.hash=temp.hash COLLATE SQL_Latin1_General_CP1_CI_AS
照合と nvarchar の比較は少し悪いですが、回避するのは簡単ではありません。それでも、ハッシュ列には独自の一意のインデックスがあります。ローカルでも問題なく動作しますが、私のこのサーバーでは、一時 DB が 21 ギガまで成長し続けています。再インデックスと縮小はまったく機能しません。
tempdb の問題に直面している他のユーザーへの補足事項です。http://bradmcgehee.com/wp-content/uploads/presentations/Optimizing_tempdb_Performance_chicago.pdfをよく読んでください。