Jan*_*zen 7 sql-server optimization sql-server-2019 query-performance
我正在调整 SQL Server 2019 中的一些 SQL 性能,并且遇到了涉及行目标问题的一个查询问题。简化的查询是:
select TOP 1 ISNULL(RUNID,-1)
from T_PROCESS_MONITOR mon WITH (INDEX = IDX_T_PROCESS_MONITOR_RUNID)
WHERE
mon.SOURCE = 'Dynamic Export'
AND
mon.STATUS = 'PROCESSING'
Run Code Online (Sandbox Code Playgroud)
(索引提示只是为了强制优化器使用索引来匹配基准)
如果我通过另一个查询提示禁用行目标OPTION (MAXDOP 1, USE HINT('DISABLE_OPTIMIZER_ROWGOAL'))
,则查询的性能会显着不同(在这种情况下 MAXDOP 并不重要)。我知道行目标会影响估计的行数,并且基于此我认为它实际上会调整执行计划。但这里的情况并非如此。两个查询的执行计划完全相同,但没有行目标的执行计划要快得多(1 秒 vs 12 秒):
有人可以向我解释一下有什么区别吗?因为尽管估计的行数不同,但两个索引扫描实际上从同一索引读取相同数量的行,然后我期望性能是相同的。
编辑:共享执行计划:
归档时间: |
|
查看次数: |
119 次 |
最近记录: |