在 SAP HANA 的日常性能排查里,有一类问题特别“隐蔽”:SQL 看起来只是在子查询里多投影了一个常量或做了一个很简单的计算,业务语义也没变,但执行时间却突然从秒级飙到分钟级,内存飙升,甚至把并发都拖慢。更让人困惑的是,同样的写法在内表连接里没事,一到LEFT OUTER JOIN或RIGHT OUTER JOIN就开始“翻车”。
这篇文章聚焦一个很具体但很高频的模式:在 Outer Join 下面的子查询里投影常量或计算列。它会触发 SAP HANA 的一个关键行为:先把子查询结果物化,再执行连接,从而带来明显的资源与性能代价。SAP 的性能指南明确指出,列引擎对这类模式并非原生支持,通常需要通过物化来保证语义正确。 (SAP Help Portal)
现象背后:列引擎为什么会选择“先物化再连接”
很多人对 SAP HANA