看这个例子View: I_SalesContractItemFlfmtCube

有的地方用的left join, 有的地方用的association,有什么guideline规定何时何处用哪一种技术么?

看这个帮助文档:
http://help.sap.com/hana/SAP_HANA_Core_Data_Services_CDS_Reference_en.pdf

Association它指明了两个View之间的关系,如果一个View A中定义了Association到另外一个View B时,View A可以把这个Association作为一种特殊类型的字段暴露在selection list里面,那么当上层的另一个View C使用到View A时,他可以通过View A中暴露的这个Association去取View B中的字段。
也就是说只有当View C会用到View B中的字段时,在Runtime的时候View A就会去做left outer join到View B,当上层的View没有用到View B中的字段时,View A就不会Join View B。这样就能提升了View的性能,因为如果直接使用left outer join,那么View A就肯定会join View B,不管上层会不会用到View B中的字段。Association在底层应该也是用left outer join实现的。

如果两个View中的字段是在Business Logic中是必定会用到的,那么就用Join;如果只是提供一个额外连接,但上层用户有需要时自行去取这些字段,那么就用Association。

我的理解是通过association暴露出来的字段是一种lazy join的behavior,只有当field真正被另一个view用到的时候才会去做join。

本质上,所有的association在runtime时都会被interpret为left out join,当然前提是这个association你在runtime的时候用到了。

从基本规则而言,如果你需要target table/view的(一个或多个)字段直接暴露在当前定义的view里,那么使用join,而如果只是想暴露一个接口,为上层提供resource,那么使用association。
既然说到left out join,我们就不得不提到,left out to one join, 这里的to one会在runtime时根据消费的情况决定是否这个join会真正被执行。比如当target table/view 的字段在消费时(比如在ABAP动态或静态代码里)没有用到,那么这个join会被by pass掉。
前面说association在runtime时也是LOJ,因此,截图里的[0…1]其实也是被被翻译成To one。当然还有[1…1]也是。其效果类似。

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

SAP CDS view里,什么时候用left join,什么时候用association相关推荐

  1. SAP CDS view里如何定义association

    consumption view里, @ObjectModel.association.type: [#TO_COMPOSITION_CHILD] Z_i_Order_View._Item, @Obj ...

  2. SAP CDS view里的association会被编译成LEFT OUTER MANY TO ONE JOIN

    一个例子:我在ABAP Development Tool里编写的CDS view association,激活之后,在运行时读取该CDS view: 使用事务码ST05获得的数据库跟踪文件,发现该as ...

  3. SAP CDS view里将Date和time连接成timestamp的函数

    函数名:DATS_TIMS_TO_TSTMP Calculating Timestamp in CDS View from Date and Time: – The values of the col ...

  4. SAP CDS view里association和join的区别

    Association它指明了两个View之间的关系,如果一个View A中定义了Association到另外一个View B时,View A可以把这个Association作为一种特殊类型的字段暴露 ...

  5. SAP ABAP CDS view 里 INNER JOIN 和 Association 的区别

    最近有朋友在我的知识星球里向我提问,SAP ABAP CDS view 的 INNER JOIN 和 Association 的功能可以理解为一样吗? (关于加入我的知识星球的方式,请移步本文文末) ...

  6. SAP ABAP CDS view里的注解在ABAP后台是如何被解析的?

    我们在ABAP Development Tool里编写SAP CDS view,为视图维护这些以@开头的注解,同Java Spring里广泛应用的annotation一样,都是一种为developme ...

  7. SAP CDS view(Core Data Service)自学的一些材料和方法

    Self study和incident handling的不同之处 (1) incident handling有时间压力,遇到自己思路卡住求助同事无可厚非.而Self study没有太大的时间压力,要 ...

  8. SAP CDS view性能调优的一些准则和例子

    SAP CDS view优化的guideline: 一个很简单的SELECT CDS view的open sql: 它的execution plan都会非常复杂: 我们就只展开上面execution ...

  9. SAP CDS view自学教程之八:SAP Fiori Elements里不同类型的annotation

    Part1 – how to test odata service generated by CDS view Part2 – what objects are automatically gener ...

最新文章

  1. socket连接 代码
  2. souce insight中文出现乱码
  3. Thrust快速入门教程(三)——迭代器与静态调度
  4. 多用户企业文件管理系统源码_固定资产管理系统的细节分析
  5. 黑马程序员python笔记_#华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库...
  6. PowerShell~文件操作和对象遍历
  7. 祝贺|合肥.NET俱乐部第二期技术沙龙活动圆满成功
  8. WinForm Paenl里面添加Form
  9. oracle查效能,【DataGuard】Oracle 11g物理Active Data Guard实时查询(Real-time query)特性...
  10. python with open 循环建立指定名字文件_Python基础——文件
  11. 7-11 名人堂与代金券 (25 分)
  12. PAT乙级(1014 福尔摩斯的约会)
  13. DeFi稳定币协议Lien Protocol通过zkRollup测试网迁移至以太坊二层
  14. STM32F429HAL库时钟系统学习笔记
  15. php在屏幕中间弹窗,屏幕中间弹框的一种写法
  16. Markdown编辑器使用教程_被迫流浪者的博客
  17. 基于Window Server 2016R2 + AD帐号 + Radius无线网络认证
  18. 计算机常用键的作用,键盘功能键大全2017 电脑键盘常用按键功能详解
  19. 【无线科普】802.11n 中HT20 HT40的区别和信道划分及plus,minus含义
  20. 重启w7计算机按那个键,win7电脑重启的快捷键

热门文章

  1. sonar-checkstyle plugin源码
  2. sklearn自学指南(part53)--高斯过程
  3. JAVA面试题(part7)--Integer类
  4. echars水状_Echarts饼状图属性设置
  5. 5 大常用机器学习模型类型总结
  6. SAP Cloud Application Programming bookshop 例子的 Fiori Preview
  7. 最简单的Angular Route hello world场景都跑不通的一个原因
  8. SAP Spartacus B2B unit list页面抬头的计数逻辑的实现原理
  9. :focus-within的冒泡触发
  10. Visual Studio Code的用户设置相关