news 2026/10/21 11:38:11

CDS 里没读到的 Join,HANA 真的会跳过吗,一次基于真实执行计划的实测

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CDS 里没读到的 Join,HANA 真的会跳过吗,一次基于真实执行计划的实测

写 ABAP CDS 久了,很容易形成一种经验判断。一个 CDS View 里虽然关联了很多表,但上层程序只读取主表字段,SAP HANA 应该会聪明地把那些没用到的 Join 干掉。

这个判断有时完全正确,有时却会把我们带进一个很隐蔽的坑。

真正麻烦的地方并不是 Join 有没有被执行,而是 cardinality 一旦声明错了,同一个 CDS View,仅仅改变SELECT字段列表,最终返回的行数都可能发生变化。更极端一点,一个列表显示 19885 行,而同一个 View 上执行COUNT(*)却只有 2566。代码没有换,过滤条件没有换,数据也没有换,仅仅是读取字段不同,结果集已经不是同一个世界。

这不是理论上的边角案例,而是在 SAP S/4HANA 2020 和 SAP S/4HANA 2023 两套实验系统上实际测出来的结果。实验分别使用 SAP_BASIS 755 搭配 SAP HANA 2.00.052,以及 SAP_BASIS 758 搭配 SAP HANA 2.00.073。2023 系统里有 1199 个物料、2051 条物料文本,2020 系统里有 2566 个物料、19885 条多语言文本。实验围绕MARA、MAKT、T134构造了八种不同 Join 写法,再通过真实 ABAP SQL 进入 HANA SQL Plan Cache,最后对缓存里的真实 SQL 做EXPLAIN PLAN。因此这里讨论的不是凭经验猜 Optimizer 会做什么,而是直接观察 Optimizer 生成的执行计划。

SAP HANA

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/21 11:38:11

泛金融IT 研发管理平台设计

当科技部门"人少、外包多、系统多、无源码":一种"资产驱动型"IT 研发管理平台该怎么设计市面上大多数研发产品默认客户是IT部门研发全流程管控。但现实中,大量泛金融科技公司、券商数科、保险 IT 部门的形态完全不同——自研团队小、…

作者头像 李华
网站建设 2026/10/21 11:36:58

Mermaid之时序图

时序图 Sequence DiagramMermaid 手册 第 03 篇 / 共 16 篇 参与者、消息箭头、生命线激活、逻辑块(alt/loop/par/opt/critical/break)、分组框与序号。 适用版本:Mermaid 11.x 主线版本;标有 beta 的图表类型语法可能随版本演进…

作者头像 李华
网站建设 2026/10/21 11:36:14

POT规范|一套个人自研NPM包本地生命周期管理体系

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/21 11:30:15

权限模型落地:RBAC表设计与接口鉴权实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华