ABAP 不要以为会JOIN就显得SQL语句很高明

    最近用户用一个报表查看采购订单的修改记录,结果运行了30分钟还没出来,选择条件如下:

   而查看其源代码,是这样写的SQL语句:用EKKO的EBELN关联CDHDR的objectid,还join EKPO,join MARA可想而知数据量有多大。此语句系统应该会先找CDHDR 中所有 objectid 与 EKKO的所有采购订单EBELN 匹配,找出的结果再排除 在修改日期在20190901 到 20190930之间的,当然还要匹配EKPO,MARA,系统是怎么个运行机制不得而知,反而这样看似高明的SQL语句,30分钟内无结果,后来强行中止,也就是不知要运行到什么时候。

   我认为在开发 SAP 修改记录时,一定要根据屏幕选择条件分别写SQL语句。以上查询条件,输入了修改日期,则先要从CDHDR中找这个修改日期之内的 objectid 等,再根据此 objectid 找 EKKO 和 EKPO。

   然后根据EKKO,EKPO数据过滤下CDHDR,因为当按修改日期查CDHDR时,会找到很多 objectid ,而查找EKKO,EKPO时还有另一个条件 即WERKS 工厂,所以这些 objectid   即对应EKKO中的EBE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值