在 7.40 版本中,我们有很多方法来过滤内部表数据。
例如,可以使用这样的 ABAP 结构:
FILTER操作员
DATA(lt_extract) =
FILTER #( lt_bseg USING KEY matnr_bwtar WHERE matnr = CONV matnr( SPACE )
AND bwtar = CONV bwtar( SPACE ) ).
FOR表迭代VALUE施工操作员
DATA(lt_extract) =
VALUE tty_bseg( FOR line IN lt_bseg WHERE ( matnr EQ SPACE AND bwtar EQ SPACE ) ( line ) ).
两者相比是否有任何性能提升?为什么?
也许您知道任何其他语法来有效地执行内部表过滤?
我在网上没有找到任何基准,但自己进行测试很简单。
逻辑上来说,专门用于该任务的 FILTER 比其他结构更快,因为在许多其他可能的操作之间进行选择会产生开销成本。
FILTER还有一个优点就是强制开发人员使用索引。当然,建立索引本身就有成本,因此您必须平衡索引的使用和过滤量。
ABAP文档7.52很好地解释了FILTER的性能以及何时不使用它的建议(https://help.sap.com/http.svc/rc/abapdocu_752_index_htm/7.52/en-US/index.htm?file=abenconstructor_expression_filter.htm ) :
表过滤也可以使用表理解或
使用表迭代的迭代表达式进行表缩减
为了。运算符 FILTER 为这种特殊的格式提供了缩短的格式
案例和执行起来更有效率.
表过滤器构造
结果逐行。如果结果包含几乎所有行
源表,这个方法可能比复制源表慢
并从目标表中删除多余的行.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)