触发器使得在表格和交叉数据库之间自动同步变得更容易。但是其性能可能会受到初看起来不明显的事物很大的影响。这里我将指出一个能减少这种无法预料问题影响的命令。
例如,INSERT触发器重复地被激活,尤其当使用“INSERT INTO”语句进行大量的插入操作时。在这种触发器一再被激活的情况下,触发器每个插入操作会发出“DONE_IN_PROC”信息,这会严重地减慢速度。
如果触发器正在作为计划结构化查询语言服务器代理程序的结果工作,这种减速尤其明显。结构化查询语言服务器代理程序自动地对后来的每个“DONE_IN_PROC”信号施加一个延时,以避免服务器拥塞。如果你尝试通过查询分析器运行同样的指令集,由于没有这样的延时,它将执行得更快。如果你通过查询分析器运行这样的一个查询,并且检查多重的" n rows affected "语句,很可能查询会被重复地进行并且比实际所需的再多激活触发器很多次。
关闭“DONE_IN_PROC”信息,可以在一个触发器语句开始的时候使用“SET NOCOUNT ON”命令。触发器时常不需要行计数器。如果是这样,你可以考虑改变激活触发器的命令(或者触发器本身),使得所有变更一次完成。如果这过程仍然费时太久,为了简化起见,你应该重新考虑触发器被激活的方式。