与高手探讨:asp中使用触发器和一般SQL语句,哪一个效率更高?
比如有表出库和表在库,
表出库字段:f_id1,f_count1
表在库字段:f_id2,f_count2
为保证数据完整,表出库的f_count1加上1时,表在库的f_count2应该减去1。
这时在表出库中建立触发器更新表在库和直接用SQL语句更新表在库,哪一种效果更好?哪一种对服务器的负荷会更小?
我实际遇到的问题是,更改某一个表时,有3个表应该同时得到更新。
我个人认为,直接用SQL语句更新表在库更好一些,你的意见呢?
问题点数:30、回复次数:4Top
1 楼yangzi(笨笨)回复于 2001-06-04 13:18:00 得分 15
用触发器快。
对服务器的负荷小些。
呵呵,如果想知道为什么的话,就把分数提高一倍。OK?Top
2 楼guo(itpub.net)回复于 2001-06-04 13:34:00 得分 15
触发器快,少了网络传送,解析时间.Top
3 楼yangzi(笨笨)回复于 2001-06-04 13:56:00 得分 0
唉,分没了。
guo兄把答案给公开了。
呵呵。Top
4 楼bgxy(上兵伐谋)回复于 2001-06-04 15:10:00 得分 0
谢谢解答!
我遇到的实际问题是,一套解答问题的小系统。解答之后,会有人判断解答的对错,计算误差率,并设定解答者级别
具体的表:
table解答:解答者ID、登录日期、开始时刻、结束时刻、解答的问题ID
table误差率:解答者ID、当前月错误数、错误数合计、当前月错误率、错误率
table解答个数:解答者ID、日期、当天数、当月数、合计数
table在线时间:解答者ID、日期、当天在线时间、当月在线时间、在线时间合计
table解答员级别:解答者ID、级别ID(根据误差率、解答个数、在线时间,随时变换)
解答者登陆系统后,解答一个问题,在表“table解答”中添加一条记录,同时在页面中用JavaScript中的变量保存现在的时间和点击“提交”按扭的时间,作为表“table解答”的字段‘开始时刻’和‘结束时刻’。
虽然网页用asp,但数据库处理的相关代码都写在COM中,在表“table解答”中添加一条记录之后,在服务器的一个文件夹中产生一个SQL语句的文本文件,当服务器负荷小时,逐个执行文件,写进数据库。
因为在线时间的计算很烦琐,而且判断解答员级别也很复杂,我的想法是这些计算在浏览器端计算(计算经过的时间应该没问题),不需要在服务器端计算时间,直接用SQL语句写进数据库。如果用了触发器,更新了表“table解答”之后,SQL Server会经过时间计算、误差率计算之后更新4个表,我想那样效果会很差。
我把SQL语句写进服务器的文本文件,网络传输应该可以消减,而且COM是编译过的,效率比asp的脚本高很多。
哪位高手对触发器和COM的效率了解的话,希望大家探讨一下Top




