Inner Join, Left Outer Join 和 Association 的区别
测试用的 CDS 视图的源代码,第 8 行用 Inner Join 连接 TJ02T, 后者存放了所有系统状态的 ID 和描述。
Inner Join 测试结果:对于那些在 TJ02T 里没有维护描述信息的状态,它们不会出现在结果集里。
把第八行的 Inner Join 改成 Outer Join,测试结果相反:注意观察下图 stat 列值为 E0001 的行项目也出现在了结果集里。
Association 的测试结果同 Left Outer Join 一致。
Association 的底层实现实际上和 Left Outer Join 一致。有两种办法来验证这个结论。
方法 1
在 ABAP Development Studio 里预览一个含有 association 实现的 CDS view,能够在工具里发现该 association 最后是通过 Left Outer Join 实现的。
方法 2
事务码 ST05 里的这个按钮: 显示执行计划,也能显示出 association 底层是由 Left Outer Join 实现的。
要获取更多 Jerry 的原创技术文章,请关注公众号"汪子熙":
版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/684f1cdd389b1171b2e66d27f】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论