本教程之前的文章,我们已经介绍了如何用 ST05 事务码,对一个 ABAP 报表进行性能分析和优化的步骤。 重构后的代码: 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 表分别各自 上一篇教程末尾,笔者提到,本报表的设计和实现仍然有进一步优化的空间。 虽然我们重构后,已经成功将数据库表的总共读取次数,降低到两次,但是看上图第 10 行代码发现,我们将整张 zperson 表的全部内容,读取到了内表 本例订单表 下面是新一轮的性能优化思路的详细介绍。 |
|