共用方式為


SET STATISTICS IO (Transact-SQL)

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體

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

Transact-SQL 語法慣例

Syntax

SET STATISTICS IO { ON | OFF }

輸出

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

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

如果使用的索引是主索引鍵的唯一索引或叢集索引,且您只要搜尋一個值,掃描計數就是 0。 例如: WHERE Primary_Key_Column = <value>
當您使用非主索引鍵資料行上定義的非唯一叢集索引來搜尋一個值時,掃描計數就是 1。 執行此處理序是為了檢查您所搜尋索引鍵值是否有重複的值。 例如: WHERE Clustered_Index_Key_Column = <value>
當 N 是使用索引鍵尋找索引鍵值之後,從分葉層級向左或右側開始的不同搜尋或掃描數目時,掃描計數為 N。
logical reads 從資料快取中讀取的頁數。
physical reads 從磁碟中讀取的頁數。
page server reads 從頁面伺服器讀取的頁面數目。 **
read-ahead reads 透過預先讀取查詢放入快取中的頁數。
page server read-ahead reads 透過預先讀取,從頁面伺服器讀取並放入數據快取的頁面數目。 **
lob logical reads 從數據快取讀取的 LOB* 頁面數目。
lob physical reads 從磁碟讀取的 LOB* 頁面數目。
lob page server reads 從頁面伺服器讀取的 LOB* 頁面數目。 **
lob read-ahead reads 透過預先讀取,查詢放入數據快取的 LOB* 頁面數目。
lob page server read-ahead reads 透過預先讀取,從頁面伺服器讀取並放入數據快取的 LOB* 頁面數目。 **

* 大型物件二進位 (LOB) 數據類型包括 textntextimagevarchar(max)nvarchar(max)varbinary(max)或數據行存放區索引頁面。

** 僅限 Azure SQL 資料庫 超大規模資料庫的非零。

備註

STATISTICS IO 為 ON 時,會顯示統計數據,且當 OFF 時,不會顯示資訊。

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

的設定 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 76, physical reads 0,
page server reads 0, read-ahead reads 0, page server read-ahead reads 0, 
lob logical reads 0, lob physical reads 0, lob page server reads 0, 
lob read-ahead reads 0, lob page server read-ahead reads 0.