使用 FOR ALL ENTRIES 将 ABAP 内表内容作为数据库表的读取条件之一试读版

简介: 使用 FOR ALL ENTRIES 将 ABAP 内表内容作为数据库表的读取条件之一试读版

本教程之前的文章,我们已经介绍了如何用 ST05 事务码,对一个 ABAP 报表进行性能分析和优化的步骤。


94. 使用事务码 ST05 对 SAP ABAP 数据库表访问性能调优的一个具体例子

image.png

重构后的代码:

REPORT zdb_optimization.
DATA:lt_order  TYPE TABLE OF zmyorder,
     ls_order  LIKE LINE OF lt_order,
     lt_person TYPE TABLE OF zperson,
     ls_person LIKE LINE OF lt_person.
SELECT * INTO TABLE lt_order FROM zmyorder.
SELECT * INTO TABLE lt_person FROM zperson.
LOOP AT lt_order INTO ls_order.
  READ  TABLE lt_person into ls_person with key person_id = ls_order-customer_id.
  "SELECT SINGLE * INTO ls_person FROM zperson WHERE person_id = ls_order-customer_id.
  WRITE:/ 'order:', ls_order-order_id, ' user:', ls_person-person_name.
ENDLOOP.


下图是使用事务码 ST05 采集到的重构后的数据库表访问情况,对 ZMYORDER 和 ZPERSON 表分别各自只读取了一次,每次读取了4条数据出来。


image.png

上一篇教程末尾,笔者提到,本报表的设计和实现仍然有进一步优化的空间。


虽然我们重构后,已经成功将数据库表的总共读取次数,降低到两次,但是看上图第 10 行代码发现,我们将整张 zperson 表的全部内容,读取到了内表 lt_person 里。

image.png


本例订单表 ZMYORDER 里能看到,系统总共只有三个用户下单,假设系统总共的注册用户不是例子里的4条(即下面第二张图),而是四千万条,那我们为了区区4条订单数据,而将四千万条用户数据全部从数据库表中取出,存储到 ABAP 应用程序内存中,显然是毫无必要的。

image.png

image.png


下面是新一轮的性能优化思路的详细介绍。

相关文章
|
索引
SAP ABAP——内表(五)【追加内表数据—INSERT】
本文主要介绍一下SAP ABAP中内表的增删查改语句中的追加内表数据的INSERT相关语句,包括使用关键字追加和使用索引追加以及不同类型内表使用INSERT追加数据的不同效果
839 1
SAP ABAP——内表(五)【追加内表数据—INSERT】
|
1天前
|
数据库 数据安全/隐私保护
为什么 SE16 事务码里,有些数据库表可以查看内容,有些表又无法查看?
为什么 SE16 事务码里,有些数据库表可以查看内容,有些表又无法查看?
13 3
为什么 SE16 事务码里,有些数据库表可以查看内容,有些表又无法查看?
|
1天前
|
数据处理 自然语言处理 BI
ABAP 源代码如何创建嵌套的内表,即内表列数据结构又是内表
ABAP 源代码如何创建嵌套的内表,即内表列数据结构又是内表
26 1
|
12月前
SAP ABAP 内表排序 动态字段排序
对于动态内表排序引用ABAP_SORTORDER_TAB
234 0
|
7月前
|
存储 BI 数据库
使用 FOR ALL ENTRIES 将 ABAP 内表内容作为数据库表的读取条件之一试读版
使用 FOR ALL ENTRIES 将 ABAP 内表内容作为数据库表的读取条件之一试读版
50 0
|
7月前
|
存储 Web App开发 数据库
如何自行查找出 SAP ABAP 标准的 OData 服务返回数据的后台数据库表和表字段名称试读版
如何自行查找出 SAP ABAP 标准的 OData 服务返回数据的后台数据库表和表字段名称试读版
98 0
|
8月前
|
SQL 数据库
SAP ABAP OData 服务如何支持 $select 有选择性地仅读取部分模型字段值试读版
SAP ABAP OData 服务如何支持 $select 有选择性地仅读取部分模型字段值试读版
55 0
SAP ABAP——内表(七)【追加内表数据—COLLECT】
本文主要介绍一下SAP ABAP中内表的增删查改语句中的追加内表数据的COLLECT相关语句
592 1
SAP ABAP——内表(七)【追加内表数据—COLLECT】
|
索引
SAP ABAP——内表(十)【读取内表数据】
本文主要介绍一下SAP ABAP中内表的增删查改语句中的读取内表数据的相关语句,包括利用关键字读取数据,利用索引读取数据
427 0
SAP ABAP——内表(十)【读取内表数据】
|
索引
SAP ABAP——内表(六)【追加内表数据—APPEND】
本文主要介绍一下SAP ABAP中内表的增删查改语句中的追加内表数据的APPEND相关语句,包括使用索引追加数据(APPEND语句不能使用关键字追加数据)以及不同类型内表使用APPEND追加数据的不同效果
1721 2
SAP ABAP——内表(六)【追加内表数据—APPEND】