点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我有同一条SQL语句的两个副本,唯一的区别是where条件。
但这两个语句的行为完全不同,我可以在解释计划中看到,执行不佳的语句是应使用的忽略索引。
我一直在尝试使用提示来尝试强制其执行效果更好的版本,但似乎只是忽略了我的提示
选择一个〜matnr, 一个〜satnr, a〜bflme, a〜matkl, w〜wladg, a〜tragr, a〜meins,"基本UOM Coalesce(u2〜umrez,u1〜umrez)as umrez,"订单单位分子 Coalesce(u2〜umren,u1〜umren)as umren,"订单单位分母 Coalesce(u2〜meinh,u1〜meinh)as meinh,"订购UOM s1〜deink为xs_deink, s2〜deink为xdc_deink 来自mara 内部连接maw1 as w 在a〜matnr = w〜matnr 内部加入marm为u1 在a〜matnr = u1〜matnr上 和a〜meins = u1〜meinh 以u2身份加入marm 在w〜matnr = u2〜matnr w〜wausm = u2〜meinh 左加入t141作为s1 在a〜mstae = s1〜mmsta上 左连接t141作为s2 在a〜mstav = s2〜mmsta @it_satnr中的一个〜satnr 和a〜bflme = @ me-> gc_logvar_purch %_hints oracle'INDEX(" MARA"" MARA〜ZLV")' oracle'INDEX(" MAW1"" MAW1〜0")' oracle'INDEX(" MARM"" MARM〜0")' oracle'INDEX(" T141"" T141〜0")' 到表@et_mara中。
我唯一能想到的是我在联接中使用表别名,但是提示我使用的是逻辑名,应该在提示中使用别名吗?
例如:
%_ hints oracle'INDEX(" a"" MARA〜ZLV")'
如果是,我假设我在同一个表中两次使用了不同的别名,我应该将两者都添加到提示中吗?
最后,我假设在提示中写入" MARA〜0"将迫使其使用主键,因为这是在解释计划中显示的方式,尽管该索引不能被视为DDIC中的索引。
非常感谢,
戴夫
我已经通过反复试验回答了自己的问题。
供参考:
下面的更正代码可以完全按照我希望优化器使其工作的方式工作:
我要回答,但需要检查笔记。 有一个事务,您可以以解释的形式输入SQL,并添加提示等。我忘记了它的位置(也许是DB04?),但这对于正确使用语法非常有用。
一周热门 更多>