[SQL SERVER]What Number of Rows Read

执行计画中有一个Number of Rows Read资讯,这篇我来简单介绍一下

之前我在公司分享如何分析和改善执行计画workshop,

细心的同事有发现到一个新的属性,就是Number of Rows Read,这

属性从SQL 2016开始新增,SQL Server开发团队提供该资讯,

我个人不得不赞叹一下,这资讯也是我个人在分析执行计画需要留意的。

Number of Rows Read是什么

是指该运算子操作读取的资料笔数,不是指过滤后返回的笔数,

换句话说,和Actual Number of Row完全不同,下图可以明显看出差异
这里写图片描述
我举一个简单的例子进行执行计画分析

SELECT  *
FROM Employee
WHERE NationalIDNumber = 954276278

这里写图片描述
分析

该查询使用Clustered index scan存取资料,Number of Rows Read资讯明确告诉我们真正读取资料的数量共288笔,

而Actual Number of Rows资讯告诉我们QO过滤后的笔数只有1笔,

我再透过一个简单汇总查询,相信大家更有感觉这属性的价值

select count(*) from  Employee

这里写图片描述
可以看到该汇总查询使用Index Scan存取资料,Number of Rows Read笔数=288,

和上面Clustered index scan一模一样(也就是整个资料表所有资料),

但这里的Actual Number of Rows=288却大不同,因为该查询没有任何过滤条件,

所以QO也会返回整个索引范围的资料(资料流箭头相当粗)。

我们在回到Clustered index scan的查询,我们知道最后的结果集只有一笔资料,

但QO却使用Clustered index scan读取了整个资料表288笔资料,

透过Number of Rows Read属性,我们可以明确知道QO实际读取和返回的资料笔数,

这很明显就是一个效能低落的查询,所以,我们必须改善这查询,如以下执行计画
这里写图片描述
最后的结果集只有一笔资料,我们当然希望QO透过高效率的索引搜寻快速定位该笔资料即可,

换句话说,Number of Rows Read=1才是我真正想要的,

现在,我想你应该知道这属性所要表达的潜在问题了吧。

PS:更多的执行计画分析和改善,我将在第三部曲决战执行计画,帮大家更了解执行计画

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值