在我查询调优期间,STATISTICS IO会话选项是个人朋友,由于对于指定的查询,它准确告诉你有多少页已读取。每次,SQL Server从缓存池骑牛一个8K的页,它经过STATISTICS IO的输出得到记录。sql
一般我会建议启用STATISTICS IO来更好的理解在给定的查询里,涉及的表上有多少页被读取。并且查询调优的目标是尽量减小这些读取页数——经过索引策略。对于查询,你数据读的越少,查询就会越快。但今天的问题以下:对于查询调优,STATISTICS IO有你须要的一切么,仍是又你应该知道更多的维度?缓存
另外一个很是重要的选项——至少从个人角度来看——是SSMS里的客户端统计信息选项:服务器
当对你的会话启用这个选项,SSMS会告诉你你的查询客户端处理的更多信息。下图是SSMS里一个典型的输出结果:网络
这里SSMS向你展现你的查询最后一次执行的性能指标。最重要的指标是网络统计和时间统计。网络统计信息向你展现下列信息:性能
一般我会留意从服务器接收的字节数,由于用收到的信息,你很容易看到从服务器返回的信息量。固然你的结果集越大,你返回的数据越多,你的查询时间也会更长。我在客户这遇到过有返回几G数据的查询,他们还在抱怨为何查询这么慢,额~~~~~这个……spa
另外时间统计信息向你展现了下列信息:3d
这里最重要的维度是客户端处理时间,由于它告诉你SSMS自己须要多长时间来处理你的查询。这里的大部分时间是SSMS用在计算和可视化结果集。同理,结果集越大,SSMS花更多的时间来可视化它,所以查询时间会更长。blog
STATISTICS IO是查询调优的很好开始,另外我也使用来自客户统计信息的输出来更好的理解有多少数据在网络上传输,SSMS自己须要花多少时间来处理数据。
索引
所以下次你的查询慢的时候,你可使用客户统计信息来检查在SSMS里的时间花费。或许查询自己很快,可是SSMS须要更多的时间。get
感谢关注!
https://www.sqlpassion.at/archive/2017/03/27/do-you-need-more-than-statistics-io-for-query-tuning/