2014-01-16 55 views
1

防止在可能包含多達5億行的SQL表中插入重複行的最有效方法是什麼?最有效地防止在大型SQL Server表中複製

我看到有兩種方式:

1)定義重複記錄和捕捉DuplicateKey例外列創建複合主鍵。

2)使用​​,但這將需要索引那些參與WHERE子句的列。

回答

2

UNIQUE或PRIMARY KEY。重複檢查將在插頁上完成。

如果您正在使用SSIS,請在密鑰上進行匹配查找並將重複項指向醫院表。

2
ALTER TABLE MyTable ADD CONSTRAINT UC_MyConstraintName UNIQUE (col1,col2,col3) 
0

1)比2)更快,因爲您只是使用已編譯的sql代碼複製了SQL Server對機器代碼所做的操作。

對於一些開箱即用的東西:如果插入性能比立即正確性更重要,那麼首先忽略重複項。

您可以標記或單獨記錄未經檢查的行並運行計劃任務以返回並重新檢查它們。對於非常慢的讀取選項,或者重複項沒有太多問題,這可能是正確的。

如果您不需要寫入直接在重複上失敗,您可以使用服務代理異步執行重複檢查,這將需要一些工作,但開始here作爲入門。