SQL约束会导致缓慢吗?

时间:2011-09-27 18:17:46

标签: sql sql-server constraints

我正在更新的表上有一些约束(默认值列)。更新真的很慢,我想知道它是否可能是约束错误?

有问题的约束是:

ALTER TABLE [dbo].[OrderCustomers] ADD  CONSTRAINT [DF_OrderCustomers_AmountTotal]  DEFAULT ((0.00)) FOR [AmountTotal]

更新语句只是更改了几列,其中一列是上面约束中的列,另一列是没有FK的列。

仅供参考:我禁用所有触发器以隔离问题。

2 个答案:

答案 0 :(得分:5)

列的默认约束极不可能引人注目。有很多事情可能会导致更新缓慢。但是,我要看的第一个地方就是更新桌面上的任何触发器。这可能会导致一系列性能问题。

诊断此问题的最佳方法之一是启动SQL事件探查器,并在执行更新时查看SQL Server上发生的情况。你可能会对发生的事情感到非常惊讶。

答案 1 :(得分:4)

除非你把它们编码得非常糟糕,否则没有。

严重的是,我的意思是像UDF这样的东西来访问表来生成一个值。或者在触发器中发送电子邮件RBAR。

慢写可能是由许多事情造成的。我怀疑约束。见Why does an UPDATE take much longer than a SELECT?