%_hints oracle-忽略索引

2020-09-12 02:50发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我有同一条SQL语句...

         点击此处--->   EasySAP.com群内免费提供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中的索引。

非常感谢,

戴夫

2条回答
亦是此间程序员
2020-09-12 03:16

我要回答,但需要检查笔记。 有一个事务,您可以以解释的形式输入SQL,并添加提示等。我忘记了它的位置(也许是DB04?),但这对于正确使用语法非常有用。

一周热门 更多>

相关问答