news 2026/10/8 9:52:45

一个 ELSE 为什么会拖慢整条 CDS 查询,Not-Null Preserving Calculation 如何卡住 SAP HANA 优化器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一个 ELSE 为什么会拖慢整条 CDS 查询,Not-Null Preserving Calculation 如何卡住 SAP HANA 优化器

在一个典型的 SAP S/4HANA 采购订单数据模型里,明细数据和抬头数据经常被拆成不同的 CDS Entity。采购订单行项目负责物料、数量、工厂等信息,采购订单抬头负责订单状态、供应商、审批状态之类的信息。业务查询往往只关心某一个物料,理论上经过一个选择性很高的WHERE条件以后,真正需要参与后续处理的数据可能只剩几十条甚至几条。

此时很容易产生一种直觉,SAP HANA 应该先把这几条数据筛出来,再去做JOIN,再针对最终留下来的记录执行计算字段。数据库处理的数据越少,CPU、内存以及中间结果集自然也越小。

可是在某些 ABAP CDS 模型中,PlanViz 展现出来的实际执行计划完全不是这样。

SAP HANA 可能不得不扫描关联右侧的大量数据,对几十万甚至几百万行逐行执行CASE、COALESCE或其他计算,形成一个巨大的中间结果集,再把这个结果拿去执行LEFT OUTER JOIN。左侧明明存在非常严格的过滤条件,右侧计算却像完全没有看到这个过滤条件一样。

这种现象经常不是 SAP HANA Optimizer 不够聪明,而是数据模型通过一个很不起眼的表达式,把优化器能够采用的合法执行路径堵住了。

这个表达式就是Not-Null Preserving Calculation。

SAP 官方把Not-Null-Preserving Left Outer Join明确列为 CDS Entity 中比较典型的性能反模式。官方文档给出的核心判断非常明确,只要右侧存在一个

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

AgentLoop:内核事件驱动架构的统一调度循环设计

写内核这事儿,越写到后面越会发现:最难的不是某个精妙的算法,而是控制流。DSH内核写完中断管理、内存分配和任务调度之后,我面对的是一个很实际的问题——外设越来越多,每个外设都有自己的一套事件处理逻辑&#xff0c…

作者头像 李华
网站建设 2026/10/8 9:50:31

Agent-Reach:面向开发者的轻量级智能体CLI调用枢纽

1. 项目概述:Agent-Reach 是什么?它解决的不是“能不能用”,而是“怎么用得稳、用得快、用得省心” Agent-Reach 这个名字乍看像某个大厂新发布的智能体平台,但实际翻遍 GitHub 主页、官方文档和社区讨论,你会发现它既…

作者头像 李华
网站建设 2026/10/8 9:50:28

AI编程工作流:语义-契约-执行三层解耦实践

1. 这不是“用AI写代码”,而是重构整个开发节奏的底层逻辑 我入职大厂三个月后,第一次在周会上被问:“你最近提交的PR里,为什么有73%的函数级代码由AI生成,但整体交付周期反而缩短了22%?”——当时我没急着…

作者头像 李华
网站建设 2026/10/8 9:43:27

2026四川成都AI搜索优化新模式:GEO优化高性价比服务商选型与完整服务流程

二零二六年四川、成都AI搜索优化新模式,按需定制GEO优化服务商哪家性价比高加完整服务流程 AI搜索优化不是一次性的技术操作,而是让品牌在豆包、DeepSeek、Kimi、通义千问、文心一言、腾讯元宝六大主流AI平台被持续找到、被稳定推荐的长期信源建设工程。…

作者头像 李华
网站建设 2026/10/8 9:43:08

Django Rest Framework构建API的实现示例

前言 Django REST framework(通常简称 DRF)是 Django 生态里最主流的 REST API 框架。它不是 Django 自带的,而是一个独立的第三方包,要单独安装。这一点常被误解——很多人以为 Django 生来就能写 REST 接口,实际上不…

作者头像 李华