6.Index and Buffer Support
6.1.Select with index support
Select语句在Where条件中尽量使用索引字段
6.2.Select with buffer support
对于最常用的只读的数据读取,使用SAP Buffering,不要使用BYPASSING BUFFER,例如:
SELECT SINGLE * FROM T100 INTO T100_WA
BYPASSING BUFFER
WHERE SPRSL = 'D'
AND ARBGB = '00'
AND MSGNR = '999'.
7.Array Operations (internal tables)
7.1.Select ... Into Table t
使用Into Table版本的Select 语句要比使用 Append 的方式速度更快,例如:
SELECT * FROM T006 INTO TABLE X006.
DATA T006_WA TYPE T006.
CLEAR X006.
SELECT * FROM T006 INTO T006_WA.
APPEND T006_WA TO X006.
ENDSELECT.
7.2.Array Insert VS Single-row Insert
向数据库中插入数据时,使用内表代替单行操作,减少应用服务与数据库的交互次数,能够有效地减少系统负荷。
INSERT CUSTOMERS FROM TABLE TAB.
LOOP AT TAB INTO TAB_WA.
INSERT INTO CUSTOMERS VALUES TAB_WA.
ENDLOOP.
7.3.Select-Endselect vs. Array-Select
对于只需要使用一次的数据,使用Select-Endselect-loop来代替Select Into
Table。内表需要更多的内存空间。例如:
SELECT * FROM T006 INTO X006_WA.
ENDSELECT.
SELECT * FROM T006
INTO TABLE X006.
LOOP AT X006 INTO X006_WA.
ENDLOOP.
注:个人认为还是取出数据到内表的方式要好,牺牲存储空间,换取时间上的性能。