ABAP CDS性能问题 (一)

例如:以表VEVW为例子,把同一个HU的所有外向交货单号按照时间戳来串联起来,如下图:

 ABAP CDS性能问题 (一)

情况1.

如果输入的条件为handle

ABAP CDS性能问题 (一)

大概执行时间为100多毫秒,分配内存为2.4MB

ABAP CDS性能问题 (一)

情况2.

输入条件为DN1

ABAP CDS性能问题 (一)

消耗时间为2秒多,分配的内存为6G

ABAP CDS性能问题 (一)

结论:

之所以有这么大的差异,是因为按HANDLE的时候,字段handle是关键字平且关键字自带索引,所以系统把数据过滤下降到DB层,以VEVW为数据的为基础(handle为过滤条件),自下而上的推导数据,情况1的整个视图计算过程如下图

ABAP CDS性能问题 (一)

 

请况2,是因为输入DN1没有索引,而且该字段又用了汇总的功能,导致系统无法正常的把过滤数据下降到DB,系统几乎以EKKO的整个表作为基础数据往上推导,推导过程见下图

ABAP CDS性能问题 (一)

所以在建ABAP CDS视图时最好关键字,索引等因素考虑在内,以提高ABAP CDS的性能,不然CDS视图很容易把整个表的数据都装载进来消耗极大的资源