首頁 >資料庫 >mysql教程 >使用公共子表達式假脫機時,為什麼我的視窗聚合查詢顯示出意外的高邏輯讀取?

使用公共子表達式假脫機時,為什麼我的視窗聚合查詢顯示出意外的高邏輯讀取?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-21 05:57:14344瀏覽

Why Are My Windowed Aggregate Queries Showing Unexpectedly High Logical Reads When Using Common Subexpression Spools?

為什麼具有公共子表達式假脫機的視窗聚合函數的邏輯讀取量很高?

在執行計劃中使用公共子表達式假脫機時,特別是對於視窗聚合函數,會出現令人驚訝的高邏輯讀取對於大表已經觀察到。這種行為引起了人們對此類假脫機效率的擔憂。

根本原因:工作表邏輯讀取的唯一計數

與傳統假脫機表不同,工作表的邏輯讀取是用於聚合的內部結構, 計算方式不同。工作表邏輯讀取不是測量雜湊頁,而是針對每行讀取遞增。儘管工作表效率很高,但這種獨特的計數方法導致看似很高的計數。

理解公式

在您的具體情況下,您發現的公式是「工作表邏輯讀取= 1 NumberOfRows 2 NumberOfGroups 4,」由於這些的特定行為而成立線軸:

  • 1 : 初始開銷與最終虛擬行
  • NumberOfRows * 2: 兩個輔助線軸的完整讀取
  • 組數* 4: 主線軸發出(NumberOfGroups 1)行

其他見解

  • 主線軸發出附加行以表示最終組的結束。
  • 公式在最終組件中考慮了這一額外行,使其成為NumberOfGroups 1.

故障排除提示

雖然追蹤頁面讀取不是工作表的一個選項,但了解這些獨特的計數機制可以幫助解釋觀察到的高邏輯讀取。

參考

如需進一步說明,請參閱至:

  • 查詢調優與最佳化書籍,第3 章
  • Paul White 關於常見子表達式假脫機的部落格文章

以上是使用公共子表達式假脫機時,為什麼我的視窗聚合查詢顯示出意外的高邏輯讀取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn