SAP程序性能优化解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
For all entries
The for all entries creates a where clause, where all the entries in the driver table are combined with OR. If the number of entries in the driver table is larger than
rsdb/max_blocking_factor, several similar SQL statements are executed to limit the length of the WHERE clause. The plus
∙Large amount of data
∙Mixing processing and reading of data
∙Fast internal reprocessing of data
∙Fast
The Minus
∙Difficult to program/understand
∙Memory could be critical (use FREE or PACKAGE size
Some steps that might make FOR ALL ENTRIES more efficient:
∙Removing duplicates from the driver table
∙Sorting the driver table
∙If possible, convert the data in the driver table to ranges so a BETWEEN statement is used instead of and OR statement:
FOR ALL ENTRIES IN i_tab
WHERE mykey >= i_tab-low and mykey <=
i_tab-high.
Nested selects
The plus:
o Small amount of data
o Mixing processing and reading of data
o Easy to code - and understand
The minus:
o Large amount of data
o when mixed processing isn’t needed
o Performance killer no. 1
Select using JOINS
The plus
o Very large amount of data
o Similar to Nested selects - when the accesses are planned by the programmer o In some cases the fastest
o Not so memory critical
The minus
o Very difficult to program/understand
o Mixing processing and reading of data not possible
Use the selection criteria
SELECT * FROM SBOOK.
CHECK: SBOOK-CARRID = 'LH' AND SBOOK-CONNID = '0400'.
ENDSELECT.
SELECT * FROM SBOOK
WHERE CARRID = 'LH' AND
CONNID = '0400'.
ENDSELECT.
Use the aggregated functions
C4A = '000'.
SELECT * FROM T100
WHERE SPRSL = 'D' AND
ARBGB = '00'.
CHECK: T100-MSGNR > C4A.
C4A = T100-MSGNR.
ENDSELECT.
SELECT MAX( MSGNR FROM T100 INTO C4A WHERE SPRSL = 'D' AND
ARBGB = '00'.
Select with view
SELECT * FROM DD01L
WHERE DOMNAME LIKE 'CHAR%'
AND AS4LOCAL = 'A'. SELECT SINGLE * FROM DD01T WHERE DOMNAME = DD01L-DOMNAME AND AS4LOCAL = 'A' AND AS4VERS = DD01L-AS4VERS AND DDLANGUAGE = SY-LANGU. ENDSELECT.
SELECT * FROM DD01V WHERE DOMNAME LIKE 'CHAR%' AND DDLANGUAGE = SY-LANGU. ENDSELECT.
Select with index support
SELECT * FROM T100
WHERE ARBGB = '00'
AND MSGNR = '999'. ENDSELECT.
SELECT * FROM T002.
SELECT * FROM T100
WHERE SPRSL = T002-SPRAS
AND ARBGB = '00'
AND MSGNR = '999'.
ENDSELECT. ENDSELECT.
Select … Into table
REFRESH X006.