SAP ABAP语法 Select single 和 FOR ALL ENTRIES IN 到底哪个性能更好

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SAP ABAP语法 Select single 和 FOR ALL ENTRIES IN 到底哪个性能更好相关的知识,希望对你有一定的参考价值。

不能做对比!
Select single 是选择单条数据用的,类似 up to 1 rows。
FOR ALL ENTRIES IN itab[] 意思是符合内表关键字的数据。用For all entries in 比用join效率高好多,但前提条件是IN itab 不能数据太庞大,不然还不如Select + loop。
如果硬要比较那肯定是Select single 性能最好
参考技术A Select single 和 For all entries in 不是一回事, 怎么拿来比较
Select single 应该是和 Select .. up to one rows 来比, 据说是Selelct single效率高,
1.据说Select .. up to one rows 是选择全部符合条件的, 然后再选其中的第一条
2.据说Select single是选到一条就结束了

For all entries in 后面接一个内表, 用前要确保内表有值, 用For all entries in 比用join效率高好多, 尤其数据多的时候, 不过代码要多写点。。。本回答被提问者和网友采纳

SAP ABAP:如何获取select某个条件下的条目数

       在ABAP中,有时候我们需要取某一条件下的条目数,要如何实现呢?

       这里有程咬金的三板斧:

(1)第一板斧:系统变量sy-dbcnt

 1   DATA: L_COUNT TYPE I.
 2   SELECT EQUI~EQUNR
 3          EQKT~EQKTX
 4          ILOA~SWERK
 5     INTO TABLE GT_EQUI
 6     FROM EQUI
 7     LEFT JOIN EQKT  ON  EQUI~EQUNR = EQKT~EQUNR  AND SPRAS = SY-LANGU
 8     LEFT JOIN EQUZ  ON  EQUI~EQUNR = EQUZ~EQUNR  AND EQUZ~DATBI = 99991231
 9     INNER JOIN ILOA  ON  EQUZ~ILOAN = ILOA~ILOAN
10     WHERE ILOA~SWERK IN S_SWERK
11     AND   EQUI~ERDAT IN S_ERDAT .
12 
13   IF SY-SUBRC = 0.
14     L_COUNT = SY-DBCNT.
15   ENDIF.

(2)第二板斧:select  count (*)

 1   DATA: L_COUNT TYPE I.
 2   SELECT COUNT( * )
 3     INTO  L_COUNT
 4     FROM EQUI
 5     LEFT JOIN EQKT  ON  EQUI~EQUNR = EQKT~EQUNR  AND SPRAS = SY-LANGU
 6     LEFT JOIN EQUZ  ON  EQUI~EQUNR = EQUZ~EQUNR  AND EQUZ~DATBI = 99991231
 7     INNER JOIN ILOA  ON  EQUZ~ILOAN = ILOA~ILOAN
 8     WHERE ILOA~SWERK IN S_SWERK
 9     AND   EQUI~ERDAT IN S_ERDAT .
10 
11   IF SY-SUBRC = 0.
12 
13   ENDIF.

(3)第三板斧:select  count (*)

 1   DATA: L_COUNT TYPE I.
 2   SELECT EQUI~EQUNR
 3          EQKT~EQKTX
 4          ILOA~SWERK
 5     INTO TABLE GT_EQUI
 6     FROM EQUI
 7     LEFT JOIN EQKT  ON  EQUI~EQUNR = EQKT~EQUNR  AND SPRAS = SY-LANGU
 8     LEFT JOIN EQUZ  ON  EQUI~EQUNR = EQUZ~EQUNR  AND EQUZ~DATBI = 99991231
 9     INNER JOIN ILOA  ON  EQUZ~ILOAN = ILOA~ILOAN
10     WHERE ILOA~SWERK IN S_SWERK
11     AND   EQUI~ERDAT IN S_ERDAT .
12 
13   IF SY-SUBRC = 0.
14 *    L_COUNT = SY-DBCNT.
15     DESCRIBE TABLE GT_EQUI LINES L_COUNT.
16   ENDIF.

 

以上是关于SAP ABAP语法 Select single 和 FOR ALL ENTRIES IN 到底哪个性能更好的主要内容,如果未能解决你的问题,请参考以下文章

第二篇SAP ABAP7.50新语法之OPEN SQL

工作笔记之 SELECT 语句在 SAP ABAP 中的用法总结(上)

SAP ABAP select 语句为啥取不到数据(确认后台表中有数据)

ABAP系列SAP ABAP7.40新语法简介第一篇

abap中,select single 与 select ... endselect的区别?

abap中select single和select endselect有啥相同和不同之处?