触发器不可以乱用
来源:互联网 发布:手机4g网络加速器 编辑:程序博客网 时间:2024/04/30 05:35
突然发现有一个语句
UPDATE dnt_users SET adminid = 0 WHERE groupid = 7
运行得特别慢,更新的数据是四万多条记录, 表里也是有四万多条记录。
在查看后发现库里有一个触发器
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'TR_UpdateUserName' AND type = 'TR')
DROP TRIGGER TR_UpdateUserName
GO
CREATE TRIGGER TR_UpdateUserName
ON dnt_users
FOR UPDATE
AS
BEGIN
------------------------(1)-------------------
------------------------(1)-------------------
END
这个触发器主要是用来当dnt_users这个表的username更新时,同时更新其它表的。
一开始以为是触发器里的(1)位置的语句不够优化的原因,但是后来就在(1)位置定义了一个变量,没有其它任何操作,更新时也是很慢。
当把触发器删除了,才变快。
在网上查了下资料:
在大量并发的情况下,使用触发器是很危险的事。在并发量大的系统中触发器很影响性能的.
如果非用不可,一定要注意SQL的质量.
对性能的影响大小跟SQL的质量关系很大.不能一概而论.触发器多不是好事:
第一:一定会影响性能,若是数据量大时,每次都要触发上百上千触发器可想而知
第二:基于维护方面,不谈有多少触发器,当每修改一次触发表相应触发器就失效,符出代价可想而知.
不建义多用触发器,用函数与过程代替之.
看来以后还是要多注意触发器的使用
- 触发器不可以乱用
- \n不可乱用啊
- 不可乱用Object类型引用
- struts的html base属性不可乱用
- Solaris下/home目录不可乱用
- iOS下的#define不可乱用
- 不可以!
- 不可以!
- 不可以!
- 不可以!
- 不可以!
- 不可以!
- 不可以!
- 不可以!
- 不可以
- 学不可以已
- 不可以输入中文
- 不可以输入中文
- 优秀网站源码、编程源码下载网站
- 企业业务流程管理难在哪里
- 逝去
- 深入浅析:面向对象编程四大原则
- 企业业务流程图设计方法
- 触发器不可以乱用
- 看来很难受
- 如何采集原始图象数据存储格式的数据
- 制造型企业业务流程管理的瓶颈分析
- VC 预编译头
- Delphi源程序格式书写规范
- WinCE 6.0 DirectDraw改动
- 2010开年
- 沃尔玛物流与供应链管理研究与剖析