日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SAP CDS view里,什么时候用left join,什么时候用association

發布時間:2023/12/19 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP CDS view里,什么时候用left join,什么时候用association 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

看這個例子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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。