【发布时间】:2009-01-21 18:27:25
【问题描述】:
我正在使用数据库,我想开始使用 LINQ To SQL。出于性能原因,该数据库现在没有任何 FK。我们一次向数据库插入数百万行,这就是没有任何 FK 的原因。
所以我想我要向数据库添加非强制 FK 来描述我的 LINQ To SQL 表之间的关系,但我不希望添加非强制外键会影响性能。
有谁知道这可能会产生什么影响?
更新:我将 LINQ-To-SQL 用于非性能密集型的东西。 80% 的数据访问是通过生产中的存储过程进行的。但是对于编写单元测试和其他非性能关键任务,LINQ-To-SQL 使数据访问变得非常容易。
更新:这是添加非强制 FK 的方法
ALTER TABLE [dbo].[ACI] WITH NOCHECK ADD CONSTRAINT [FK_ACI_CustomerInformation] FOREIGN KEY([ACIOI]) 参考 [dbo].[CustomerInformation] ([ACI_OI]) 不可复制 去吧
ALTER TABLE [dbo].[ACI] NOCHECK 约束 [FK_ACI_CustomerInformation] 去吧
【问题讨论】:
-
如何添加非强制外键?
-
ALTER TABLE [dbo].[ACI] WITH NOCHECK ADD CONSTRAINT [FK_ACI_CustomerInformation] FOREIGN KEY([ACIOI]) REFERENCES [dbo].[CustomerInformation] ([ACI_OI]) NOT FOR REPLICATION GO ALTER TABLE [dbo].[ACI] NOCHECK 约束 [FK_ACI_CustomerInformation] GO
-
答案不是很明显。使用 nocheck 约束分析您的负载,然后不使用它们并比较两次运行。即使有人给了你一个答案,为什么要相信它,因为发现你的系统的答案很简单,并且可能会引发你甚至没有想过要探索的其他问题
标签: performance sql-server-2008 foreign-keys