好贷网好贷款

触发器的效率问题 40xxwood]

发布时间:2016-12-3 10:28:53 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"触发器的效率问题 40xxwood]",主要涉及到触发器的效率问题 40xxwood]方面的内容,对于触发器的效率问题 40xxwood]感兴趣的同学可以参考一下。

SQL Server 2005 有一个软件 A ,每分钟向表 T1 里写36条数据(没几个字段),同时在 T1 上有一个触发器,触发条件是Insert,功能是计算本分钟数据和上一分钟数据的差值,存入表T2。 实际应用中发现,每到整分钟的时候,软件A都会非常卡(其他软件如IE、Word不卡),8、9秒钟没反应,然后恢复正常。 测试发现,若关闭触发器,软件A不卡。 请教高人,这种情况,是我触发器的代码写的有问题,还是本身触发器效率就不行?有没有什么办法解决? 另请问:若我用1条insert语句一次性写入36条数据,触发器会触发几次?

把你的触发器代码贴出来看先。 对于第二个问题,你的36条数据是怎么一次性插入数据库的? 我猜应该是通过循环一条条插入的吧, 每执行一次insert,就触发一次的

这要看楼主你触发器是如何写的,数据是一条一条插入还是作为一个集合去插入。

触发器效率蛮高的,但是性能开销比较大

一个语句执行一次,也就是说,不管你一次insert几条数据,0条,10条,100条,都是触发一次。 你的触发器写的感觉有问题,36条数据,很小的计算量,你写的好的话,毫秒级别的事,你感觉不出来的。

不管insert 几条 只触发一次 但是也可以达到这几条都被用于去计算的效果 关键看你怎么写了。

引用 1 楼  的回复:功能是计算本分钟数据和上一分钟数据的差值 这里可能问题吧,不要在触发器里做无谓的计算。 触发器就负责把变化前的值放到T2里,要什么计算结果的话基于T2做。

建议不用触发器,特别是数据量很大的表。

triggers fire when any valid event is fired, regardless of whether or not any table rows are affected The trigger and the statement that fires it are treated as a single transaction, which can be rolled back from within the trigger. If a severe error is detected (for example, insufficient disk space), the entire transaction automatically rolls back.  Reference:http://msdn.microsoft.com/zh-cn/library/ms178110.aspx

上一篇:windows2003系统用什么版本的Microsoft SQL Server? 20fisherboy]
下一篇:SQL2000 升级到2008 会出现什么不可预见的问题么? 20yuyongdema]

相关文章

相关评论