閱文時長 | | 0.23分鍾 | 字數統計 | | 420.8字符 |
主要內容 | | 1、引言&背景 2、自定義時間變量求差法 3、MSSQL內置方法 4、MSSQL選項開啟時間統計 5、聲明與參考資料 | ||
『MSSQL·查詢T-SQL語句執行時間的三種方法』 | |||
編寫人 | | SCscHero | 編寫時間 | | 2021/5/22 AM12:30 |
文章類型 | | 系列 | 完成度 | | 已完成 |
座右銘 | 每一個偉大的事業,都有一個微不足道的開始。 |
一、引言&背景 完成度:100%
a) 應對問題
- 如何統計T-SQL語句的執行時間?
- 統計T-SQL語句的執行時間有哪幾種方法?
- 統計T-SQL語句的執行時間的幾種方法有哪些優缺點?
b) 應用場景
- 需要統計T-SQL、存儲過程、視圖、函數等執行時間的場景。
- DB性能調優,對比不同的方式執行時間。
c) 解決原理&方法
- 自定義時間變量求差法。
- MSSQL內置統計信息選項。
- 默認開啟時間統計信息。
二、自定義時間變量求差法 完成度:100%
實現方式如下。
DECLARE @VarDatetime DATETIME
SET @VarDatetime=GETDATE()
/*此處寫入需要查詢執行時長的語句*/
SELECT [語句執行花費時間(毫秒)]=DATEDIFF(MS,@VarDatetime,GETDATE())
【TIPS】此種方法的執行時間相比MSSQL內置統計時間略長,有一種說法是跟調用了聚合函數有關。
三、MSSQL內置方法 完成度:100%
a) 語法簡介
SET STATISTICS PROFILE ON:顯示分析、編譯和執行查詢所需的時間(以毫秒為單位)。
SET STATISTICS IO ON:報告與語句內引用的每個表的掃描數、邏輯讀取數(在高速緩存中訪問的頁數)和物理讀取數(訪問磁盤的次數)有關的信息。
SET STATISTICS TIME ON:顯示每個查詢執行后的結果集,代表查詢執行的配置文件。
b) 示例Demo
SET STATISTICS TIME ON
SET STATISTICS IO ON
SET STATISTICS PROFILE ON
GO
/*此處寫入需要查詢執行時長的語句*/
GO
SET STATISTICS PROFILE OFF
SET STATISTICS TIME OFF
SET STATISTICS IO OFF
c) 可獲取信息
此種數據統計方法,可從消息中查看CPU時間和總時間。並可獲得掃描計數、邏輯讀取、物理讀取、預讀次數、邏輯讀取、物理讀取、lob預讀等信息。可從結果集中,獲取IO執行時間和CPU執行時間。

d) 數據深度分析
占用時間:當前這一步的總時間。如果占用時間比CPU時間大很多,那開銷主要用於IO上。
邏輯讀取次數:從數據緩存讀取的頁數。數字越小,性能越好。在性能調優中這個數字非常重要。因為它不會隨着執行又執行而改變,除非數據或查詢語句有變動。在進行性能調優時,這個可以作為性能提升的重要參考。
物理讀取次數:從磁盤讀取的頁數。這個會隨着執行又執行而改變。大多數情況下,連續第2次的執行時,它的物理讀取值為0(因為會加載到內存中去)。----來自《sqlserver 查看腳本執行時間》
四、MSSQL選項開啟時間統計 完成度:100%
工具->選項->查詢執行->高級,如下圖所示:
----來自《SQLServer 查看SQL語句的執行時間》
五、聲明與參考資料 完成度:100%
SQLServer 查看SQL語句的執行時間
sqlserver 查看腳本執行時間
原創博文,未經許可請勿轉載。
如有幫助,歡迎點贊、收藏、關注。如有問題,請評論留言!如需與博主聯系的,直接博客私信SCscHero即可。