SET STATISTICS IO (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

導致 SQL Server 顯示 Transact-SQL 陳述式所產生的實體與邏輯 IO 活動數量資訊。 實體 IO 與存取磁碟上的資料頁相關,而邏輯 IO 與存取記憶體中的資料頁 (資料快取) 相關。

Transact-SQL 語法慣例

Syntax

  
SET STATISTICS IO { ON | OFF }  

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

備註

當 STATISTICS IO 為 ON 時,會顯示統計資訊,而其為 OFF 時,則不會顯示資訊。

在將此選項設定為 ON 之後,所有 Transact-SQL 陳述式都會傳回統計資訊,直到將此選項設定為 OFF 為止。

下表列出和描述輸出項目。

輸出項目 意義
Table 資料表的名稱。
掃描計數 為了建構輸出的最終資料集,在達到分葉層級之後朝任何方向啟動以擷取所有值的搜尋或掃描次數。

如果使用的索引是主索引鍵的唯一索引或叢集索引,且您只要搜尋一個值,掃描計數就是 0。 例如: WHERE Primary_Key_Column = <value>

當您使用非主索引鍵資料行上定義的非唯一叢集索引來搜尋一個值時,掃描計數就是 1。 執行此處理序是為了檢查您所搜尋索引鍵值是否有重複的值。 例如: WHERE Clustered_Index_Key_Column = <value>

當 N 是使用索引鍵找出索引鍵值之後,朝向分葉層級左側或右側啟動的不同搜尋或掃描次數時,掃描計數就是 N。
邏輯讀取 從資料快取中讀取的頁數。
實體讀取 從磁碟中讀取的頁數。
讀取前讀取 放入查詢快取中的頁數。
LOB 邏輯讀取 從資料快取中讀取的頁數。 包含 textntextimagevarchar(max)nvarchar(max)varbinary(max) 或資料行存放區索引頁。
LOB 實體讀取 從磁碟中讀取的頁數。 包含 textntextimagevarchar(max)nvarchar(max)varbinary(max) 或資料行存放區索引頁。
LOB 讀取前讀取 放入查詢快取中的頁數。 包含 textntextimagevarchar(max)nvarchar(max)varbinary(max) 或資料行存放區索引頁。

SET STATISTICS IO 的設定是在執行階段進行設定,而不是在剖析階段進行設定。

注意

當 Transact-SQL 陳述式擷取 LOB 資料行時,有些 LOB 擷取作業可能需要往返 LOB 樹狀結構多次。 這可能造成 SET STATISTICS IO 報告的數字高於預期的邏輯讀取次數。

權限

若要使用 SET STATISTICS IO,使用者必須有執行 Transact-SQL 陳述式的適當權限。 不需要 SHOWPLAN 權限。

範例

此範例會顯示 SQL Server 在處理陳述式時,使用多少邏輯與實體讀取。

USE AdventureWorks2022;  
GO         
SET STATISTICS IO ON;  
GO  
SELECT *   
FROM Production.ProductCostHistory  
WHERE StandardCost < 500.00;  
GO  
SET STATISTICS IO OFF;  
GO  

以下為結果集:

Table 'ProductCostHistory'. Scan count 1, logical reads 5, physical   
reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0,   
lob read-ahead reads 0.  

另請參閱

SET 陳述式 (Transact-SQL)
SET SHOWPLAN_ALL (Transact-SQL)
SET STATISTICS TIME (Transact-SQL)