ABAP-SELECT~ENDSELECT与LOOP~ENDLOOP 区别

SELECT透明表时,当符合WHERE语句有多条记录,每条记录又要拿出来处理,一般有两种方式。

1.SELECT~INTO到结构体或者字段中,然后处理结构体中栏位信息,后面要加ENDSELECT.
如果这么写程式,会怎么样呢?随着数据量的增加,有可能宕掉。
原因是因为在SELECT~ENDSELECT这个过程中,SELECT每一笔数据都需要跟数据库透明表保持连接, 如果很多笔数据都跟数据库保持的这种连接,会导致数据库端因为连接超时而断开。

2.那LOOP~ENDLOOP这种方式,通过SELECT INTO到内表中,相当于一次性从透明表中把数据取出来,接下来LOOP内表中的数据,不需要持续跟数据库连接,可以减少搜索数据的时间。我们在LOOP以前可以用SORT对标准表按KEY值进行排序(内表没有特殊指明表类型,就是标准表)。
但是这种方式,不是一点缺陷都没有的,会牺牲存储空间,与SELECT~ENDSELECT相比,换取性能和时间上的优势。

总的来说,为了系统的稳定起见,建议使用LOOP~ENDLOOP 的方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值