处理大数据量业务时,如何设计程序结构和使用正确的SQL语句

本文总结了在处理大数据量业务时,如何设计程序结构以提高效率。重点强调在OLTP系统中利用绑定变量优化频繁执行的不同WHERE条件SQL语句。同时,探讨了在循环处理中关于COMMIT语句的位置选择,如置于循环体外或根据自增变量取模判断提交,以提升性能。
摘要由CSDN通过智能技术生成
测试步骤:
1、打开计时:
                 sql>set timing on
2、建立测试表:
                 sql>create table a(a int,b varchar2(1000));
3、测试:
        a、不绑定变量 ,循环内提交:
                                     begin
              for i in 1..10000 loop
                  execute immediate 'insert into a (a,b) values('||i||',to_char('||i||'))';
                  commit;
             end loop;
      end;
                 Elapsed: 00:00:38.31
                 sql>truncate table a;
 
b、绑定变量,循环内提交
 begin
              for i in 1..10000 loop
                  execute immediate 'insert into a (a,b) values(:1,to_char(:2))' using i,i;
                  commit;
             end loop;
      end;
 sql>/
Elapsed: 00:00:28.86秒
 
         c、不绑定变量,循环外提交
 begin
              for i in 1..10000 loop
                  execute immediate 'insert into a (a,b) values('||i||',to_char('||i||'))';
             end loop;
                  commit;
      end;
 sql>/
Elapsed: 00:00:19.24秒    
         d、绑定变量,循环外提交
begin
              for i in 1..10000 loop
                  execute immediate 'insert into a (a,b) values(:1,to_char(:2))' using i,i;
             end loop;
                  commit;
      end;
 sql>/
Elapsed: 00:00:12.66秒    
排名:
1 不绑定变量, 循环内提交.    38.31秒
2  绑定变量,循环内提交         28.86秒
3 不绑定变量, 循环外提交     19.24秒
4  绑定变量,循环外提交         12.66秒
 

4:总结下:

在OLTP类型的系统中,会存在大量的重复执行的sql语句,只是WHERE后面的条件取值不一样,此时就需要绑定变量.

在循环处理时,commit的语句在循环体外还是循环体内,又或者可以设置一个整型自增变量取模值判断提交.

  循环体内

   i++;

   if (i%5==0) {commit;}

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值