在DB2上调整SQL PLAN

2020-09-05 06:39发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好专家

我对具有绑定变量的SQL的执行计划有疑问:

SQL1:在附加文件上按计划运行非常快

选择计数(*)

来自JHMATCH m
内连接VHBORDER bo
上m.BORDERID = bo.ORDERID
内连接VCRPTTRADINGACCVN ta
bo.CLIENTID = ta.CLIENTID
和bo.TRADINGACCSEQ = ta.TRADINGACCSEQ
和m.VALUEDATE> ='2019-06-03'
和m.VALUEDATE <='2019-06-30'

SQL2:对附件文件的计划运行非常慢

选择计数(*)

来自JHMATCH m
内连接VHBORDER bo
上m.BORDERID = bo.ORDERID
内连接VCRPTTRADINGACCVN ta
bo.CLIENTID = ta.CLIENTID
和bo.TRADINGACCSEQ = ta.TRADINGACCSEQ
和m.VALUEDATE> ='2019-06-02'
和m.VALUEDATE <='2019-06-30'

我执行了Runstats来收集表JHMATCH,THBORDER上的统计信息,并再次运行SQL1、2,但是遇到了同样的问题。 请帮助我调整SQL2。

非常感谢,

Bgs,Vinhpv。

sql1-plan.jpg (460.3 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好专家

我对具有绑定变量的SQL的执行计划有疑问:

SQL1:在附加文件上按计划运行非常快

选择计数(*)

来自JHMATCH m
内连接VHBORDER bo
上m.BORDERID = bo.ORDERID
内连接VCRPTTRADINGACCVN ta
bo.CLIENTID = ta.CLIENTID
和bo.TRADINGACCSEQ = ta.TRADINGACCSEQ
和m.VALUEDATE> ='2019-06-03'
和m.VALUEDATE <='2019-06-30'

SQL2:对附件文件的计划运行非常慢

选择计数(*)

来自JHMATCH m
内连接VHBORDER bo
上m.BORDERID = bo.ORDERID
内连接VCRPTTRADINGACCVN ta
bo.CLIENTID = ta.CLIENTID
和bo.TRADINGACCSEQ = ta.TRADINGACCSEQ
和m.VALUEDATE> ='2019-06-02'
和m.VALUEDATE <='2019-06-30'

我执行了Runstats来收集表JHMATCH,THBORDER上的统计信息,并再次运行SQL1、2,但是遇到了同样的问题。 请帮助我调整SQL2。

非常感谢,

Bgs,Vinhpv。

sql1-plan.jpg (460.3 kB)
付费偷看设置
发送
8条回答
风早神人
1楼 · 2020-09-05 07:20.采纳回答

嗨,

这不是SAP数据库...随着时间的推移,SAP在注册表设置DB2_WORKLOAD = SAP下添加了越来越多的优化器开关。 这可以避免许多奇怪的优化器决策……

随着VALUEDATE范围范围谓词的改变,优化器有时会切换到HSJOIN。
HSJOIN计划在您的系统上运行缓慢。

是否有理由压缩您的表和索引? 当什么都没有压缩时,查询将导致比所需更多的I/O。 这可能是性能不佳的原因。 当表和索引较小时,DB2优化器可能还会选择一个更好的访问计划。

好的访问计划看起来还可以,但是表THBORDER上的主键并不覆盖查询中的所有谓词。 因此,DB2需要在此表上执行IXSCAN/FETCH。 将STATUS列作为INCLUDE列添加到该表的主键可能是一个好主意。 这应该在表THBORDER上启用纯IXSCAN,并使HSJOIN的吸引力降低。

问候

弗兰克

嗨弗兰克,

我从您的建议中了解了很多,非常感谢!

最衷心的希望,并希望将来能得到您的支持!

Bgs,Vinhpv。

一周热门 更多>