abap - 哪个具有更好的性能:SELECT...ENDSELECT (1 by 1) 或 SELECT...INTO TABLE / LOOP AT
问题描述
我必须从表中读取 10.000.000 条记录。
这个会比较好吗:
SELECT ... ENDSELECT
使用(没有内部表)一一读取这些记录SELECT ... INTO TABLE itab
或者使用然后循环通过这个内部表一次读取所有这些?
解决方案
如果所有 10,000,000 个条目都适合 ABAP 的主内存,则应使用单个 选择所有条目SELECT ... INTO TABLE ...
,后跟一个LOOP
.
这将昂贵的数据库交互减少到最低限度,并且将是最快的。
如果记录不适合主内存,则需要在包中检索它们。查看语句的PACKAGE SIZE
添加。SELECT