Java 内部表_何时使用内部表格?

内部表应该用于数据处理,比如列表或其他语言的数组(c#,java ...) . 从性能和系统负载的角度来看,首先将所需的所有数据加载到内部表中,然后处理该内部表而不是从数据库加载单个记录 .

但这主要适用于报告,这可能是最常见的自定义abap程序类型 . 您经常看到开发人员使用select ... endselect-statements,它实际上循环遍历数据库表,一行一行地传递给报表,一次一个 . 与将所有记录一次性读入itab,然后在itab上循环相比,这是非常缓慢的 . 我不止一次通过消除到数据库的往返来将报告的执行时间减少到一小部分 .

如果您有充分的理由从数据库中读取或立即更新记录,则应该这样做 . 如果您可以安全地将更新和删除延迟到可以一起处理所有这些更新和删除的时间点,而不会有不一致的风险,我会考虑改进 . 但如果有充分的理由(如一致性或数据丢失)立即更新,请执行此操作 .

更新:正如@vwegert提到的有关select-endselect语句的说法,该语句实际上并不为每一行创建单独的数据库查询 . 应用程序服务器的数据库接口优化查询,将行批量传输到应用程序服务器 . 从那里,记录逐个传输到abap报告(因为在报告中只有工作区来存储单行),这对于具有大结果集的查询尤其具有显着的性能影响 . 选择内部表可以将所有行直接传输到abap报告(只要有足够的内存来保存它们),因为现在有一个内部表来保存报告中的那些记录 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值