簡體   English   中英

SQL Server 2008:如果未退出,則插入,維護唯一列

[英]SQL Server 2008: INSERT if not exits, maintain unique column

我正在使用SQL Server 2008。

我要確保表格中的唯一列NVARCHAR(MAX) 該表有600,000條記錄,並且每天以50,000條記錄增長。

目前,在將項目添加到表之前,我檢查它是否存在於表中,如果不存在,則將其插入。

IF NOT EXISTS (SELECT * FROM Softs Where Title = 'example example example.')
BEGIN
INSERT INTO Softs (....)
VALUES (...)
END

我在“標題”列上沒有索引

最近,在將項目插入表格時,我開始超時。

維護唯一性的正確方法是什么?

如果真的有幫助,我可以將NVARCHAR(MAX)更改為NVARCHAR(450)

沒有索引是很瘋狂的。

這會有所幫助,但索引鍵的長度只能是900個字節。

但是,您可能已經重復了,因為第二個EXISTS可能在第一個EXISTS之后但在第一個INSERT之前運行。

索引創建將告訴您,並隨后對此進行保護。

但是,在高負載下可能會出錯。

對於高插入率/低重復率,我偏愛的方法是JFDI模式。 高度並發

BEGIN TRY
   INSERT etc
END TRY
BEGIN CATCH
    IF ERROR_NUMBER() <> 2627
      RAISERROR etc
END CATCH

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM