Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Abap 带有内部联接的Select语句将花费很长时间_Abap_Database Performance_Opensql - Fatal编程技术网

Abap 带有内部联接的Select语句将花费很长时间

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

任何人都可以帮助提高上述代码的性能。

您的联接起始表(LQUA)没有选择键或索引字段,这将始终比您能够使用它们时运行得慢

虽然似乎没有一种方法可以连接关键字段上的所有内容,但如果将查询调整为最初从MARA(其中MATNR是一个关键字段)提取,您可能会有更好的运气:


不要在下面描述的场景中使用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 )...