news 2026/10/23 3:02:58

CDS Table Function 上层 WHERE 到底能不能下推到数据库表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CDS Table Function 上层 WHERE 到底能不能下推到数据库表

在 SAP 项目里使用CDS Table Function时,有一个性能问题特别容易靠经验判断。

假设底层数据库表有几百万甚至几千万条数据,我们通过CDS Table Function包了一层AMDP SQLScript,业务程序再从这个 Table Function 上查询数据,并加上类似下面这样的过滤条件。

WHEREregion='07'

真正影响性能的并不是这一句WHERE有没有写,而是这条过滤条件最终跑到了哪里。

一种情况是,SAP HANA 优化器能够把外层查询与 Table Function 内部逻辑组合起来,让REGION = '07'一直下推到底层TABLE SCAN。数据库真正扫描和处理的数据从源头就已经被限制。

另一种情况完全不同。Table Function 先执行完整逻辑,把整个 Client 的数据生产出来,等函数执行结束以后,外层查询才从函数结果里留下region = '07'的部分。

两种 SQL 从 ABAP 开发者视角看起来差不多,运行成本却可能相差两个数量级。

这也是为什么仅仅看到 CDS 外面存在WHE

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

Flutter 3.47 鸿蒙三方库适配实战:从 0 到 1 处理 call_state_handler

Flutter 3.47 鸿蒙三方库适配实战:从 0 到 1 处理 call_state_handler 监听设备通话状态,并在状态变化时向 Dart 推送事件。 本文以 call_state_handler 3.0.0 为例,记录我如何保留原有 Dart API、补齐 Flutter OH 插件入口、在鸿蒙端接入真…

作者头像 李华
网站建设 2026/10/23 3:02:01

基于 C++17 与 RTTR 的注册式对象工厂:配置驱动的动态对象创建

在工程开发里一个非常典型的需求:配置文件(XML、JSON、ini等)仅记录一个类名字符串,程序启动后读取这个名字,自动实例化出对应的C对象。如果类型固定、数量很少,我们可以直接new或者一堆if-else / switch硬…

作者头像 李华
网站建设 2026/10/23 3:01:49

QML controls 的6种样式与主题

目录样式切换演示代码关键逻辑解析标题栏的样式名从哪来默认控件自定义控件外观演示代码关键逻辑解析换个样式,内边距也会变运行与源码说明示例 qml_styles 主要讲 Qt Quick Controls 的样式系统:六种内置样式怎么切换、都是什么效果、以及如何自定义样式…

作者头像 李华
网站建设 2026/10/23 3:01:08

PDF压缩后小字还清楚吗?用同一文件检查大小和画质

PDF压缩后文件小了,编号和金额还能看清吗?下面用同一份一页扫描PDF,对照默认压缩和JPEG图像质量参数,检查输出大小、页数与关键文字。 先保留原文件 教学输入只有图像,没有可提取文字。页面为595842点,嵌…

作者头像 李华