我正在更新的表上有一些约束(默认值列)。更新真的很慢,我想知道它是否可能是约束错误?
有问题的约束是:
ALTER TABLE [dbo].[OrderCustomers] ADD CONSTRAINT [DF_OrderCustomers_AmountTotal] DEFAULT ((0.00)) FOR [AmountTotal]
更新语句只是更改了几列,其中一列是上面约束中的列,另一列是没有FK的列。
仅供参考:我禁用所有触发器以隔离问题。
答案 0 :(得分:5)
列的默认约束极不可能引人注目。有很多事情可能会导致更新缓慢。但是,我要看的第一个地方就是更新桌面上的任何触发器。这可能会导致一系列性能问题。
诊断此问题的最佳方法之一是启动SQL事件探查器,并在执行更新时查看SQL Server上发生的情况。你可能会对发生的事情感到非常惊讶。
答案 1 :(得分:4)
除非你把它们编码得非常糟糕,否则没有。
严重的是,我的意思是像UDF这样的东西来访问表来生成一个值。或者在触发器中发送电子邮件RBAR。
慢写可能是由许多事情造成的。我怀疑约束。见Why does an UPDATE take much longer than a SELECT?