在 SAP S/4HANA 项目里排查一条 CDS View 性能问题时,经常会碰到一种很有迷惑性的情况。CDS 源代码看上去并不复杂,没有几十层UNION,没有巨型GROUP BY,甚至关联条件也只有两三个,但运行时间、峰值内存和执行计划却远比预期夸张。
其中有一类特别典型的模式,就是Non-Equi Left Outer Join。
从 CDS 建模者的视角看,它可能只是下面这样一个很自然的业务条件。
a.Field1=_b.Field1anda.Field2>_b.Field2第一项是普通等值关联,第二项只是多了一个>。业务含义很好理解,也符合很多真实业务数据模型。例如根据物料匹配价格条件,同时要求某个数量、日期或者等级落在特定边界范围内。
问题并不在于>运算符本身很慢,而在于当这种非等值条件和