使用WHERE/JOIN进行SELECT:性能

2020-09-08 23:14发布

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

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


您好,专家们,我对JOIN条件有疑问。 有时我需要在WHERE条件和JOIN条件下插入相同的字段。

例如:

选择*
          FROM kblk加入kblp
               开启kblk〜belnr eq kblp〜belnr
          在哪里kblk〜belnr eq lv_belnr
            与kblp〜blpos eq lv_blpos。  

我的问题是关于此精选曲目的性能。 之前处理过什么? 在哪里或加入?

如果WHERE条件在

之前处理
加入
   选择        *
          FROM kblk加入kblp
               开启kblk〜belnr eq kblp〜belnr
          在哪里kblk〜belnr eq lv_belnr
            与kblp〜belnr eq lv_belnr
     与kblp〜blpos eq lv_blpos。  

更好,因为我可以表示表KBLP的所有关键字段。

如果在条件之前处理了JOIN条件,则由于" kblk〜belnr eq lv_belnr",条件" kblp_belnr eq lv_belnr"无效。 联接的记录已经在belnr上具有过滤器。

最佳表现是什么?

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

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


您好,专家们,我对JOIN条件有疑问。 有时我需要在WHERE条件和JOIN条件下插入相同的字段。

例如:

选择*
          FROM kblk加入kblp
               开启kblk〜belnr eq kblp〜belnr
          在哪里kblk〜belnr eq lv_belnr
            与kblp〜blpos eq lv_blpos。  

我的问题是关于此精选曲目的性能。 之前处理过什么? 在哪里或加入?

如果WHERE条件在

之前处理
加入
   选择        *
          FROM kblk加入kblp
               开启kblk〜belnr eq kblp〜belnr
          在哪里kblk〜belnr eq lv_belnr
            与kblp〜belnr eq lv_belnr
     与kblp〜blpos eq lv_blpos。  

更好,因为我可以表示表KBLP的所有关键字段。

如果在条件之前处理了JOIN条件,则由于" kblk〜belnr eq lv_belnr",条件" kblp_belnr eq lv_belnr"无效。 联接的记录已经在belnr上具有过滤器。

最佳表现是什么?

付费偷看设置
发送
3条回答
能不能别闹
1楼-- · 2020-09-09 00:01

Ebrahim Hatem 所说的相辅相成,您有可能看到 执行计划,它告诉您数据库在您的条件下所决定的内容(在其他系统上可能有所不同)。

闻人可可
2楼-- · 2020-09-08 23:44

在F1帮助中,我可以看到其内容:

 WHERE附加项限制了语句SELECT ...结果集中包含的行数。

所以我认为JOIN将首先评估。 但是对此有一些讨论:

https://dba.stackexchange.com/ Questions/5038/sql-server-join-where-processing-order

Alawn_Xu
3楼-- · 2020-09-08 23:58

我曾经以错误的方式弄错了它,最终耗尽了内存。

一周热门 更多>