逻辑树:Before Project Normalization 和 Join Collapsed 的区别

Pau*_*mes 5 sql-server optimization

Before Project Normalization 树跟在 Join Collapsed 树之后。

使用大约 250 个查询的样本集 - 和 Traceflags 8605、8606、8607、3604 - 在任何示例查询中,我都没有检测到这两种树之间的任何差异。

是否可以构建一个查询,其中这两棵树之间存在差异?

(这是一篇博客文章的研究 - 我会感谢任何可以提供帮助的人。)

Pau*_*ite 7

是否可以构建一个查询,其中这两棵树之间存在差异?

不。

事件的顺序是:

  • 加入塌陷的树后,立即打印启发式加入重新排序
  • 打印项目规范化之前的内存使用情况(如果启用)。
  • 规范化项目被调用。
    • 如果项目规范化已禁用,则退出。
    • 否则,将调用派生组属性
    • 没有添加或更改任何内容,因此不会重新派生属性。
    • Normalize Projects在 Project Normalization 之前打印

如果不需要做任何工作,那么额外调用派生组属性的成本几乎为零。人们只能猜测为何是debug,印上了树进入规范化的项目