频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

如何使触发器具备良好的性能?

来源: 作者: 出处:巧巧读书 2005-11-29 进入讨论组

通过SET NOCOUNT ON 命令使触发器具有更好的性能

触发器使得表和跨数据库之间数据的自动同步行为变得简单。但是,那些一眼看上去不是很明显的东西却会对它们的性能造成显著的影响。这里我将描述一个命令,它可用来减少一些不可预料的问题产生的影响

以反复被触发的INSERT触发器为例,尤其是当使用INSERT INTO语句用来进行大量插入操作时。在语句执行的过程中,当触发器一遍又一遍的被激发的情况下,触发器将会对每个INSERT动作发布DONE_IN_PROC消息,这会使速度明显下降。

尤其是当触发器作为一个预定了时间的SQL Server Agent工作的结果而被触发时,这个速度的减慢是特别明显的 SQL Server Agent自动在每个DONE_IN_PROC 信号后强加一个延迟,以避免服务器拥塞 。如果你想通过查询分析器来运行同样的一组命令,由于没有强加这样的延迟,它的执行将会快得多。如果你通过查询分析器运行这样的查询并且查看多个语句产生的多个"n rows affected",那么很有可能查询会被反复执行,并且触发器也被重新触发多次,这比它实际需要的次数要多很多。

要关掉DONE_IN_PROC消息,可以在触发器语句的开始用SET NOCOUNT ON命令。大多数时候,以任何方式对行进行计数都是不需要的。如果确实需要,你可以考虑重新构造命令来触发触发器(或者是触发器本身),这样就使所有的改变作为一个命令完成。如果这个进程仍然花了很长时间,为了简单起见,你应该重新想一个方法来激发触发器。

 



图 文 结 合:http://www.qqread.com/database/s640107052.html进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章