Sql-Server

SET STATISTICS IO ON 中的掃描計數是什麼意思?

  • September 14, 2022

執行以下命令後,我正在查看查詢的輸出:SET STATISTICS IO ON

表 1 顯示掃描計數為 5,邏輯讀取 12197

表 2 顯示掃描計數為 0,邏輯讀取 80

文件說

掃描計數是在任何方向達到葉級別後開始的搜尋或掃描次數,以檢索所有值以建構輸出的最終數據集。

我正在尋找一個範例來了解這(掃描計數)對於上述輸出的含義。我的困惑是 12197 的邏輯讀取如何僅通過 5 次掃描發生?

正如報價所說,掃描次數是數據庫引擎啟動的掃描操作數。

這些掃描可能是對錶或索引的完整掃描。它們可能是在初始搜尋之後按索引順序進行的前向或後向掃描,也可以選擇結束點。

在 SQL Server 中唯一不被認為是一種掃描類型的是在唯一索引中對單個值進行相等搜尋。這包括 RID 和 Key Lookups,它們是根據定義尋求單行的相等性。

可能很難將 RID 查找視為查找,但它實際上是使用文件、頁面和行號直接定位行。RID Lookup不涉及掃描。

當引擎檢查其他匹配行時,其他所有內容都有一個掃描組件。

顯然,一次掃描可能會讀取不止一頁。

並行掃描(或使用範圍組件查找)通常會顯示每個執行緒一次掃描,加上一個用於將範圍分配給子工作人員的父任務。例如,在 DOP 8 的完整掃描將顯示 9 次掃描。

嵌套循環內側的操作員可能會報告多次掃描,因為它們在每次新迭代時關閉並重新打開。

請參閱 Amit Banerjee 在 Microsoft SQL Server 提示和技巧部落格上的以下內容:

另外,我的文章:

引用自:https://dba.stackexchange.com/questions/316824