7.3. 查詢計劃相關操作符
98)Table Scan:該操作符從查詢計劃參數列確定的表中獲取所有數據行。如果其參數列中出現WHERE:()謂詞,則只返回滿足該謂詞的數據行。該操作符為邏輯操作符和物理操作符。該操作符具體如圖7.3-98節點1所示。
圖 7.3-98查詢計劃操作符Table Scan示例
99)Table Spool:該操作符對其輸入進行掃描,并將每個數據行的拷貝放于一個隱藏的假脫機表中,該假脫機表存儲于臨時數據庫且其僅存在于該查詢的生命周期。如果該操作符被重繞(例如:通過一個Nested Loops操作符)但無需重新綁定,假脫機數據被使用而非重新掃描其輸入。該操作符為物理操作符。該操作符具體如圖7.3-99中節點4所示。
圖 7.3-99查詢計劃操作符Table Spool示例
100)Table Update:該操作符對查詢計劃參數列確定的表中的輸入數據行進行更改。其參數列中SET:()謂詞決定每個被更改字段所被賦予的值。這些值也許被該操作符的SET子句或該操作符的其他地方或該查詢的其他地方參考。該操作符為物理操作符。該操作符具體如圖7.3-100中節點1所示。
圖 7.3-100查詢計劃操作符Table Update示例
101)Table-valued Function:該操作符評估一個表值函數(T-SQL或CLR),并將結果數據行存儲于臨時數據庫中。當父操作符請求這些數據行時,該操作符從臨時數據庫中返回這些數據行。
調用表值函數的查詢產生帶有該操作符的查詢計劃。該操作符能被以不同參數值進行評估:
- Table-valued Function XML Reader 輸入一個XML BLOB作為參數并產生一個表示按XML文檔順序的XML節點的數據行集。其他輸入參數也許會將XML節點限定返回到XML文檔的某個子集。
- Table Valued Function XML Reader with XPath filter是一個特殊類型的XML Reader表值函數,其將輸出限定到滿足某個XPath表達式的XML節點。
該操作符為邏輯操作符和物理操作符。該操作符具體如圖7.3-101所示。
圖 7.3-101查詢計劃操作符Table-valued Function示例
102)Top:該操作符掃描其輸入,只返回最前面確定數目或確定百分比的數據行,期間,可能會基于某個排序順序。其參數列可能包含一系列正被用于關系檢查的字段。在更改相關的查詢計劃中,該操作符用于強制行數限定。該操作符為邏輯操作符和物理操作符。該操作符具體如圖7.3-102所示。
圖 7.3-102查詢計劃操作符Top示例
103)Top N Sort:該操作符與Sort操作符類似,除了該操作符只需要前N行數據,而非整個結果集。當N值較小時,SQL Server查詢執行器試圖在內存中執行整個排序操作。當N值很大時,查詢執行器將訴諸于更多沒有參數N時的通用排序方法。該操作符具體如圖7.3-103所示。
圖 7.3-103查詢計劃操作符Top N Sort示例
104)UDX:該操作符(擴展操作符,Extended Operators(UDX))實現SQL Server中眾多XQuery及XPath操作中的某個操作。所有該類操作符都是邏輯操作符和物理操作符。??
- Extended operator (UDX) FOR XML操作符用于將其輸入到單個輸出數據行的單個BLOB字段的XML表示中的關系數據行集串行化。該操作符為順序敏感的XML聚合操作符。
- Extended operator (UDX) XML SERIALIZER操作符按照XML文檔順序輸入表示XML節點或XQuery標量的數據行,并在單個輸出行的單個XML字段中產生一個串行XML BLOB。該操作符為一個順序敏感的XML聚合操作符。
- Extended operator (UDX) XML FRAGMENT SERIALIZER操作符為一個特殊類型的XML SERIALIZER ,其被用于處理表示XQuery插入數據修改擴展中正被插入的表示XML片段的輸入數據行。
- Extended operator (UDX) XQUERY STRING操作符用于評估表示XML節點的輸入數據行的XQuery字符串值。其輸出帶有一些字段的數據行,這些字段表示包含其輸入字符串值的XQuery標量。該操作符為順序敏感的字符串聚合操作符。
- Extended operator(UDX) XQUERY LIST DECOMPOSER操作符為一個XQuery列表分解操作符。對每個表示XML節點的輸入數據行,該操作符將產生一個或多個數據行,如果其輸入為XSD列表類型,則這些數據行表示包含一列元素值的XQuery標量。
- Extended operator (UDX) XQUERY DATA操作符對表示XML節點的其輸入上的XQuery fn:data()函數進行評估。其輸出帶有一些字段的一個數據行,這些字段表示包含fn:data()結果的XQuery標量。其為一個順序敏感的字符串聚合操作符。
- Extended operator XQUERY CONTAINS操作符對表示XML節點的輸入上的XQuery fn:contains()函數進行評估。其輸出帶有一些字段的一個數據行,這些字段表示包含fn:contains()結果的XQuery標量。其為順序敏感的字符串聚合操作符。
- Extended operator UPDATE XML NODE操作符對XML類型上modify()方法中XQuery替換數據修改擴展中的XML節點進行修改。
105)Union:該操作符對其多個輸入進行掃描,輸出被掃描的每行數據并對其去重。該操作符為邏輯操作符。該操作符具體如圖7.3-105中節點2所示。
圖 7.3-105查詢計劃操作符Union示例
106)Update:該操作符對查詢計劃參數列確定對象中其輸入的每個數據行進行更改。該操作符為邏輯操作符。其物理操作符為Table Update,Index Update或Clustered Index Update。該操作符具體如圖7.3-106中節點1所示。
圖 7.3-106查詢計劃操作符Update示例
107)While:該操作符實現T-SQL中的while loop。該操作符為一個語言元素。該操作符具體如圖7.3-107所示。
圖 7.3-107查詢計劃操作符While示例
108)Window Spool:該操作符將一行數據展開為代表與其相關窗口的數據集合。一個查詢中,OVER子句定義查詢結果集中的窗口,一個窗口函數為窗口中的每行數據計算一個值。該操作符為邏輯操作符和物理操作符。該操作符具體如圖7.3-108中節點3所示。
圖 7.3-108查詢計劃操作符Window Spool示例