简单的问题,但是我在Google上没有找到一个好的解释。当使用Set Statistics IO ON时,逻辑读取和扫描计数将显示在管理工具的消息窗口中。如果我有:
tblExample,扫描计数为5,逻辑读取为20
扫描计数代表什么?
简单的问题,但是我在Google上没有找到一个好的解释。当使用Set Statistics IO ON时,逻辑读取和扫描计数将显示在管理工具的消息窗口中。如果我有:
tblExample,扫描计数为5,逻辑读取为20
扫描计数代表什么?
关于"table scan"的含义,我找到的最好的解释是:
扫描次数只是指在查询过程中表或索引被访问的次数。它可以是完全扫描、部分扫描或简单地查找。
换句话说,仅凭扫描次数本身是不足够的信息。您需要知道那些扫描究竟是什么,因此您需要查看实际执行计划以获取更多详细信息。总之,仅靠它本身并不是非常有用的指标!
此外:
http://www.eggheadcafe.com/software/aspnet/32171165/set-statistics-io-scan-count-explanation.aspx
不幸的是,现在的扫描次数并没有提供很多信息。如果你看到像19223这样的数字,那么这个表可能会通过嵌套循环连接被访问多次。
曾经有一段时间,“扫描次数”只是意味着“表被访问的次数”,但那是很久以前了,大概是在SQL 6.5。只有在像...这样的查询中,您才能获得具有0定义的扫描计数。
select *
from TestA1
where CompanyID = 1
and CompanyID = 2
...在不访问表的情况下,SQL Server能够推断出查询不会返回任何行。
SET STATISTICS IO ON; SELECT * FROM [master].[dbo].[spt_values] WHERE type='A' AND number=1 AND name='rpc'
详情请参见这里。 - Martin Smith来自在线书籍
扫描计数: 执行的索引或表扫描的数量。
逻辑读取: 从数据缓存中读取的页面数量。
物理读取: 从磁盘读取的页面数量。
预读取: 为查询放置到缓存中的页面数量。
另请参见:http://technet.microsoft.com/en-us/library/ms184361.aspx
出版商: 微软出版社
出版日期: 2007年9月26日
印刷版ISBN-10: 0-7356-2196-9
印刷版ISBN-13: 978-0-7356-2196-1
页数: 448
[2]
监视查询性能
优化查询性能
由Ron Soukup, Kalen Delaney编写的第14章,发表在由微软出版社出版的《Microsoft SQL Server 7.0内幕》中
http://technet.microsoft.com/en-us/library/cc917719.aspx#ECAA
忽略扫描次数,这不重要。关注如何降低逻辑读取。基于http://www.practicalsqldba.com/2013/07/sql-server-performance-tuning.html。