【发布时间】:2019-11-30 14:42:41
【问题描述】:
我研究了一些关于“实际行数”的问题,但没有一个与我的问题相符,因此发布了它。 另外,我研究了https://www.sqlpassion.at/archive/2018/05/28/actual-number-of-rows-are-not-always-accurate/,了解实际行不同的原因,但此博客谈到与我的表无关的非聚集列存储索引。
使用https://data.stackexchange.com/stackoverflow/,查询包含“实际执行计划”的Users表-
SELECT TOP 10 Location FROM Users WHERE Location = 'Hyderabad'
SELECT TOP 10 Location FROM Users WHERE Location LIKE 'Hyderabad'
结果附后。 StackOver_Top10HydUsers_ActualExecPlanIssue.Jpg 问题是(基于我对 WHERE 运算符如何工作的理解)-
- 两个查询都产生了相同类型的执行计划。但两者在计划中都显示了不同的“实际行数”。如何以及为什么?
- 两个计划的“实际行数”都是错误的,因为两个查询 返回 10 条记录。那么,“实际行数”是用词不当吗?一世 研究了为什么 Estimated Rows 基于统计原因而有所不同 但“实际行”也是!?
-- 在“想法”中……
更新#1: 实际上,我打算了解 ActualRows 与返回的内容有何不同,即使在 PhysicalOp Clustered Id Scan 发生后实际计算了满足 WHERE 的记录。
【问题讨论】:
-
下载数据库文件,安装sql server,恢复数据库,在本地机器上运行SSMS查询,看看执行计划是否一样。
-
我看到两个查询的实际行 10。看看您是否可以重复您的观察并上传这些 xml 计划here,以便我们查看详细信息。屏幕截图未显示所有计划详细信息。
标签: sql-server sql-like sql-execution-plan