2014-01-18 66 views
0

我有一个实例,我们有一个主要记录和几个相关的表。在这种情况下,我们保留相关表中的所有历史记录。因此,在这种情况下,它看起来像这样在这种情况下触发器会更有效率吗?

Main Table - Visits 
ID 
Date 
CurrentRoomHistoryID 
CurrentStatusHistoryID 

Related Table - RoomHistory 
ID 
Name 
StartDate 
EndDate 

Related Table - StatusHistory 
ID 
StatusID 
StartDate 
EndDate 

对于速度的缘故,你可以看到我们一直在主表中的当前房间和历史的ID。现在,当任何一个更新时,我都会设置前一个房间或状态记录的结束日期,然后更新主表。

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

+2

“更高效” - 比什么? –

+0

比从应用程序运行单独的查询来更新状态表和房间历史表中的主表和相关记录。 – Jhorra

+0

更重要的是:一个触发器将永远运行,所以也许更正确的地方是更新历史 –

回答

0

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

就性能而言。您的ID字段应在所有3个表格中正确编制索引。

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

相关问题