测试delete_trigger对update语句效率的影响

--在测试环境上测试delete trigger对update语句效率的影响

1、找到一张大表
test_table  数据量 330万

2、update操作
declare
  cursor cur_id is 
    select t.ID from test_table  t where t.IDis not null
and rownum < 100000;
  rec_id cur_id%rowtype;
begin
  for rec_id in cur_id loop
      update test_table  set date_updated=sysdate where ID = rec_id.ID;
  end loop;
end;
/
--7.547 seconds
rollback;

3、创建delete trigger
create table test_table_copy as select * from test_table where 1=2;

CREATE TRIGGER del_test_table   --1
   before delete ON test_table          --2
   FOR EACH ROW
BEGIN
   INSERT INTO test_table_copy      
         (ID,
          DATE_UPDATED)     --3
      VALUES
         (:old.ID,
          :old.DATE_UPDATED);  --6
EXCEPTION
   WHEN OTHERS THEN
      NULL;
END;

4、update操作:
--6.262 seconds
rollback;

5、将trigger disable
alter trigger del_test_table disable;

6、update操作:
--6.437 seconds
rollback;

7、再将trigger enable
alter trigger del_test_table  enable;

8、update操作:
--6.609 seconds
rollback;

--结论:delete trigger对于表的update语句没有明显的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值