【发布时间】:2021-12-09 23:23:25
【问题描述】:
我使用以下查询来查看 SQL Server 执行计划。
SELECT TOP 1000
fact.division,
case when fact.division='east' then 'XXX' else 'YYY' end div,
count(1)
FROM
division join fact on (division.division=fact.division)
where
fact.division!='east'
group by
fact.division
计划如下:
我有几个关于计划的问题:
- 为什么要在聚合之前进行排序?
- 这两个流聚合操作有什么用?我可以理解在加入后做一个,但为什么要两个?
- 最后,这两个“计算标量”是干什么用的?当我将鼠标悬停在它们上方时,我期待它会告诉我一些类似于“这是
CASE声明”的内容,但它们非常不透明。我如何知道“计算标量”在做什么?
【问题讨论】:
-
如果您将执行计划上传到brentozar.com/pastetheplan 会很有帮助,这样回答者可以指出它的具体方面
-
@MartinSmith 谢谢,这里是:brentozar.com/pastetheplan/?id=ry6islzLY
标签: sql sql-server sql-execution-plan