在1个表上具有多个触发器的效率

时间:2011-02-21 14:47:36

标签: sql sql-server triggers

我打算在一张桌子上放置10-15个插入触发器。每个触发器将对另一个表进行3~插入。这会对我的数据库产生负面影响吗?我认为执行所有触发器所需的速度可能有点慢。

这样做的原因是我们为数据库中的第三方软件记录数据。表格式如下:

DateTime EquipA_Speed EquipA_Power EquipB_Speed EquipB_Power EquipC_Speed EquipC_Power

然后我们想在我们自己的数据库中规范化这些数据。我们的数据库有一个Equipment表和一个SignalType表(信号是功率,速度等)。

我的计划是触发每件设备,使其更简单,更易于维护。插入行时,我需要为Signal表中的每个设备的每个信号添加一行。

SignalID   Value  EquipmentID   SignalTypeID

2 个答案:

答案 0 :(得分:2)

您可以轮询宽表,或者使用触发器中的服务代理来通知读取表的解耦进程。

然后,您可以首先在临时表或表变量中首先准备/粉碎数据。 然后启动一个事务,执行写操作,提交。

答案 1 :(得分:0)

这完全取决于触发器的作用。触发器赢了;是性能命中,触发器包含的逻辑将在本文的第二个最后一段中读取更多详细信息:

http://msdn.microsoft.com/en-gb/magazine/cc164047.aspx

您可以做的是设置测试用例。另一件需要注意的事情是日志文件(.ldf)的大小,因为它会根据插入的频率而变得非常大。

你还想要这个吗?