[英]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.