Abap 带有内部联接的Select语句将花费很长时间
任何人都可以帮助提高上述代码的性能。您的联接起始表(LQUA)没有选择键或索引字段,这将始终比您能够使用它们时运行得慢 虽然似乎没有一种方法可以连接关键字段上的所有内容,但如果将查询调整为最初从MARA(其中MATNR是一个关键字段)提取,您可能会有更好的运气:Abap 带有内部联接的Select语句将花费很长时间,abap,database-performance,opensql,Abap,Database Performance,Opensql,任何人都可以帮助提高上述代码的性能。您的联接起始表(LQUA)没有选择键或索引字段,这将始终比您能够使用它们时运行得慢 虽然似乎没有一种方法可以连接关键字段上的所有内容,但如果将查询调整为最初从MARA(其中MATNR是一个关键字段)提取,您可能会有更好的运气: 不要在下面描述的场景中使用SELECT END SELECT。尝试执行以下操作: ->使用要选择的字段创建本地类型(lt\u yourtype) (lqua~bestq lqua~charg lqua~lgort lqua~lgnum
不要在下面描述的场景中使用SELECT END SELECT。尝试执行以下操作: ->使用要选择的字段创建本地类型(lt\u yourtype) (lqua~bestq lqua~charg lqua~lgort lqua~lgnum lqua~lgpla) lqua~lgtyp lqua~matnr lqua~meins lqua~verme lqua~werks makt~maktx makt~matnr makt~spras mara~bismt mara~matnr marc~dispo marc~matnr marc~werks) ->创建上述本地类型(lt_类型)的工作区(首选字段符号)和内部表格 ->将给定的select替换为: 选择lqua~bestq lqua~charg lqua~lgort lqua~lgnum lqua~lgpla lqua~lgtyp lqua~matnr lqua~meins lqua~verme lqua~werks makt~maktx makt~matnr makt~spras mara~bismt mara~matnr marc~dispo 马克~matnr马克~werks 输入表格lt_yourtype 来自(lqua) 内连接模块 关于makt~matnr=lqua~matnr 内连接马拉 关于mara~matnr=makt~matnr 内连接marc 关于marc~werks=lqua~werks 和marc~matnr=lqua~matnr) lqua~bestq在sbestq中的位置 和lqua~lgnum在slgnum 以及slgpla中的lqua~lgpla slgtyp中的lqua~lgtyp 斯马特纳的lqua~matnr 还有斯沃克斯的lqua~werks smaktx中的makt~maktx 以及sspras中的makt~扭伤 *和Sbismt中的MARA~BISMT 还有sdispo中的marc~dispo 循环到lt_yourtype赋值中 *将数据移动到此处的正确结构和字段
结束循环 这是在什么RDBMS上运行的?你应该在问题中加上标签。
(....)
DATA: BEGIN OF g00 OCCURS 100,
werks LIKE lqua-werks,
lgort LIKE lqua-lgort,
matnr LIKE lqua-matnr,
charg LIKE lqua-charg,
maktx LIKE makt-maktx,
verme LIKE lqua-verme,
meins LIKE lqua-meins,
dispo LIKE marc-dispo,
END OF g00.
(.....)
CLEAR : g00.
REFRESH : g00.
SELECT lqua~bestq lqua~charg lqua~lgort lqua~lgnum lqua~lgpla
lqua~lgtyp lqua~matnr lqua~meins lqua~verme lqua~werks makt~maktx
makt~matnr makt~spras mara~bismt mara~matnr marc~dispo
marc~matnr marc~werks
INTO (lqua-bestq , lqua-charg , lqua-lgort , lqua-lgnum , lqua-lgpla ,
lqua-lgtyp , lqua-matnr , lqua-meins , lqua-verme , lqua-werks ,
makt-maktx , makt-matnr , makt-spras , mara-bismt , mara-matnr ,
marc-dispo , marc-matnr , marc-werks )
FROM ( lqua
INNER JOIN makt
ON makt~matnr = lqua~matnr
INNER JOIN mara
ON mara~matnr = makt~matnr
INNER JOIN marc
ON marc~werks = lqua~werks
AND marc~matnr = lqua~matnr )
WHERE lqua~bestq IN sbestq
AND lqua~lgnum IN slgnum
AND lqua~lgpla IN slgpla
AND lqua~lgtyp IN slgtyp
AND lqua~matnr IN smatnr
AND lqua~werks IN swerks
AND makt~maktx IN smaktx
AND makt~spras IN sspras
* AND MARA~BISMT IN Sbismt
AND marc~dispo IN sdispo.
MOVE-CORRESPONDING mara TO g00.
MOVE-CORRESPONDING makt TO g00.
MOVE-CORRESPONDING marc TO g00.
MOVE-CORRESPONDING lqua TO g00.
COLLECT g00.
ENDSELECT.
FROM ( mara
INNER JOIN makt
ON makt~matnr = mara~matnr
INNER JOIN lqua
ON lqua~matnr = mara~matnr
INNER JOIN marc
ON marc~werks = mara~werks
AND marc~matnr = mara~matnr )...