在我查詢調優期間,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/