我有一个带有触发器的表(用于update),用于在发生更改时设置LastEditedTime字段-非常简单。我还有一个触发器(在update之后)来设置LastStatusChangedTime。问题如下:
使用两个触发器进行更新会不会有性能问题?或者我可以将两个触发器组合成一个?
我想知道别人是如何处理这个问题的。
谢谢。
发布于 2010-07-06 19:51:05
我认为您不能简单地将它们组合在一起,因为FOR UPDATE在TSQL执行之前工作,而AFTER UPDATE是在执行完成之后完成的。
性能完全取决于代码的质量。
如果相同的代码在一个触发器或两个触发器中,则没有性能差异。
在过去的三年里,我还没有遇到过一件没有触发器就不能做的事情。我个人尽量远离触发器。它们和其他SQL语句一样容易调整,但它们是任何数据编辑操作背后的隐藏因素,因此,我对它们保持警惕。
如果希望触发器运行批量更新,则必须编写代码使其以这种方式运行,否则将只在最后一行运行触发器。为了便于讨论,我们假设一个触发器需要1秒才能运行。如果您正在执行一个RBAR,并且运行一个值为100行的update,那么您的SQL查询直到1分钟40秒后才会返回。
奇怪的是,我发现大多数使用触发器(禁止替换)的开发人员也喜欢使用游标。
总而言之,我的两便士就是尽可能地远离他们。
https://stackoverflow.com/questions/3185766
复制相似问题