在这种情况下触发器会更有效吗?

时间:2014-01-18 06:15:07

标签: sql sql-server triggers sql-server-2008-r2

我有一个实例,我们有一个主记录和几个相关的表。在这种情况下,我们将所有历史记录保存在相关表中。所以在这种情况下它看起来像这样

Main Table - Visits
ID
Date
CurrentRoomHistoryID
CurrentStatusHistoryID

Related Table - RoomHistory
ID
Name
StartDate
EndDate

Related Table - StatusHistory
ID 
StatusID
StartDate
EndDate

为了速度,你可以看到我们在主表中保留当前房间和历史的ID。现在当更新任何一个时,我设置上一个房间或状态记录的结束日期,然后更新主表。

TRIGGER将结束日期添加到上一条记录并更新主表会更快更有效吗?

1 个答案:

答案 0 :(得分:0)

我认为效率不会依赖于单独的更新查询或触发,因为它取决于您如何过滤要更新的记录。事实上,无论您在更新查询中拥有什么,都会进入触发器定义 - 可能会进行一些小的更改。

就表现而言。您的ID字段应该在所有3个表中正确编入索引。

如果您正在为正在更新或插入的当前记录更新某些内容,则触发器可能会更快。但是,由于您要更新以前的房间或状态数据,因此搜索和更新将在触发或更新查询中花费相同的时间。