首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

善用 SET STATISTICS IO/TIME 精準量化 SQL Server 查詢性能

     編輯:關於SqlServer

查詢性能調優的本質是減少服務器資源消耗(CPU、I/O),而非單純縮短壁鐘時間。因服務器負載波動導致同一查詢耗時不穩,唯有度量資源佔用才能科學評估優化效果。

核心指標:邏輯讀、物理讀、CPU 時間

  • 邏輯讀:從數據緩衝區讀取頁數,反映查詢訪問數據量
  • 物理讀:從磁盤讀取頁數,直接對應 I/O 開銷
  • CPU 時間:查詢實際佔用的 CPU 毫秒數,排除等待時間干擾

實戰操作:開啟統計開關

-- 清空緩衝區與計劃緩存(僅測試環境執行)
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE

-- 開啟統計
SET STATISTICS IO ON
SET STATISTICS TIME ON

-- 執行目標查詢
SELECT * FROM [Order Details]

輸出解讀範例

Table 'Order Details'. Scan count 1, logical reads 10, physical reads 0, read-ahead reads 0.
SQL Server Execution Times: CPU time = 15 ms, elapsed time = 12 ms.
  • Scan count:表掃描/索引查找次數
  • logical reads:核心優化目標,越少越好
  • CPU time:純計算開銷,對比不同寫法的優劣

進階應用

  1. 對比重寫前後的邏輯讀與 CPU 時間,量化優化收益
  2. 識別「隱性掃描」:看似索引查找實則大量邏輯讀的計劃
  3. 配合 SET STATISTICS PROFILE ON 分析執行計劃細節

這兩條被忽視的 T-SQL 命令,是 DBA 從「感覺調優」走向「數據驅動調優」的關鍵儀表盤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved