RuS*_*uSh 1 .net sql sql-server sql-server-2008
我正在使用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
Run Code Online (Sandbox Code Playgroud)
我在Title列上没有索引
最近,我在向桌子插入物品时开始超时.
什么是维持独特的正确方法?
如果真的有帮助我可以将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
Run Code Online (Sandbox Code Playgroud)