cobk和coep table上的内部连接花费了大量时间

时间:2015-12-09 01:12:57

标签: sap abap

我正在尝试连接两个表并将数据导入covp_itab内部表,但这需要很长时间。 此外,我试图从数据库视图COVP获取数据,这是为两个表定义的,也花了很长时间。

SELECT bk~kokrs
       bk~belnr
       bk~budat
       bk~cpudt
       bk~bltxt
       ep~buzei
       ep~wkgbtr
       ep~objnr
       ep~gjahr
       ep~kstar
       ep~vrgng
       ep~parob1
       ep~beknz
       ep~sgtxt
       ep~objnr_n1
       ep~bukrs
INTO TABLE covp_itab
FROM cobk AS bk
INNER JOIN coep AS ep ON (bk~kokrs = ep~kokrs AND bk~belnr = ep~belnr)
WHERE bk~kokrs     = co_kokrs
AND   ep~wrttp     = '04'
AND   ep~kstar     IN s_kstar
AND   ep~vrgng     IN s_vrgng 
AND   ep~bukrs     IN r_bukrs
AND   bk~timestamp IN r_stamp.

这可能是什么问题?

1 个答案:

答案 0 :(得分:1)

正如Jagger所说,您没有使用任何可以利用其中任何一个表上的标准索引的标准。我会做一些事情:

  • 使用SE11调查哪些索引可用于COEP,并查看您是否可以制定将使用其中一个索引的选择(使用其他条件)。按顺序提供字段数据非常重要 - 即对于索引COEP~2,字段为MANDT / OBJNR / KSTAR / GJAHR / PERIO / PAROB1。如果您无法提供OBJNR但是有KSTAR,GJAHR等,它将不会使用索引,因为您没有OBJNR。但是,如果您只有MANDT和OBJNR,它可能会使用此索引。
  • 将bk~kokrs更改为ep~kokrs并将您的选择更改为从COEP读取然后加入COBK。
  • 对于您有(现在)5个条件的COEP记录,请转到SE16,输入这些选项并运行它以查看需要多长时间。请注意,查询可能会被缓存,后续运行可能会更快,因此请尝试使用不同的值。
  • 如有必要,请在COEP上创建其他索引。这些都是插入和更新的代价,所以请注意,只要你有一个慢的select语句就创建一个索引不是一个好主意。
  • 如果您创建索引但没有改善这种情况,您可以通过使用事务ST05运行SQL跟踪来找出正在使用的索引(如果有)。