日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL SERVER 执行计划各字段注释

發布時間:2024/4/15 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL SERVER 执行计划各字段注释 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SET SHOWPLAN_ALL

使 Microsoft? SQL Server? 不執行 Transact-SQL 語句。相反,SQL Server 返回有關語句執行方式和語句預計所需資源的詳細信息。

語法

SET SHOWPLAN_ALL { ON | OFF }

注釋

SET SHOWPLAN_ALL 的設置是在執行或運行時設置,而不是在分析時設置。

當 SET SHOWPLAN_ALL 為 ON 時,SQL Server 返回每個語句的執行信息但不執行語句,而且 Transact-SQL 語句將不執行。將該選項設置為 ON 后,將返回有關所有后續 Transact-SQL 語句的信息,直到將該選項設置為 OFF 為止。例如,如果在 SET SHOWPLAN_ALL 為 ON 時執行 CREATE TABLE 語句,則 SQL Server 從涉及同一個表的后續 SELECT 語句返回錯誤信息;指定的表不存在。因此,對該表的后續引用將失敗。當 SET SHOWPLAN_ALL 為 OFF 時,SQL Server 執行語句但不生成報表。

SET SHOWPLAN_ALL 是供為處理其輸出而編寫的應用程序使用的。使用 SET SHOWPLAN_TEXT 返回可由 Microsoft MS-DOS? 應用程序(如 osql 實用工具)讀取的輸出。

在存儲過程內不能指定 SET SHOWPLAN_TEXT 和 SET SHOWPLAN_ALL,它們必須是批處理中的語句。

SET SHOWPLAN_ALL 將信息作為行集返回,行集形成一個層次結構樹,用以表示 SQL Server 查詢處理器在執行每個語句時所采取的步驟。輸出中反映的每個語句都包含一個含有語句文本的行,后面跟有幾個含有執行步驟詳細信息的行。下表顯示輸出中包含的列。

列名描述
StmtText對于不是 PLAN_ROW 類型的行,該列包含 Transact-SQL 語句的文本。對于 PLAN_ROW 類型的行,該列包含對操作的描述。該列包含物理運算符,也可以選擇包含邏輯運算符。該列還可以跟有由物理運算符決定的描述。有關更多信息,請參見邏輯運算符和物理運算符。
StmtId當前批處理中的語句數。
NodeId當前查詢內的節點 ID。
Parent上一級步驟的節點 ID。
PhysicalOp節點的物理實現算法。僅限于 PLAN_ROWS 類型的行。
LogicalOp該節點表示的關系代數運算符。僅限于 PLAN_ROWS 類型的行。
Argument提供有關所執行操作的輔助信息。該列的內容取決于物理運算符。
DefinedValues包含該運算符所引入值的用逗號分隔的列表。這些值可以是出現在當前查詢(例如,在 SELECT 列表或 WHERE 子句中)內的計算表達式,或者是由查詢處理器為處理該查詢而引入的內部值。以后在該查詢內的任何其它地方都可以引用這些定義的值。僅限于 PLAN_ROWS 類型的行。
EstimateRows由該運算符輸出的預計行數。僅限于 PLAN_ROWS 類型的行。
EstimateIO該運算符的預計 I/O 成本。僅限于 PLAN_ROWS 類型的行。
EstimateCPU該運算符的預計 CPU 成本。僅限于 PLAN_ROWS 類型的行。
AvgRowSize正通過該運算符傳遞的行的預計平均行大小(以字節為單位)。
TotalSubtreeCost該操作和所有下一級操作的預計(累積)成本。
OutputList包含當前操作所計劃的列的用逗號分隔的列表。
Warnings包含與當前操作相關的警告信息的用逗號分隔的列表。警告信息可以在列的列表中包含字符串"NO STATS:()"。該警告信息表示查詢優化器曾嘗試根據該列的統計做決策,但沒有可用的統計。因此,查詢優化器不得不進行推測,這可能已導致選擇低效的查詢計劃。有關創建或更新列統計(這些統計有助于查詢優化器選擇更高效的查詢計劃)的更多信息,請參見 UPDATE STATISTICS。該列可以選擇包含字符串"MISSING JOIN PREDICATE",這表示正在進行的聯接(與表有關)未使用聯接謂詞。意外地除去聯接謂詞可能導致查詢的時間比預期長得多,并返回巨大的結果集。如果出現該警告,請驗證是否有意除去了聯接謂詞。
Type節點類型。對于每個查詢的父節點,這是 Transact-SQL 語句類型(如 SELECT、INSERT、EXECUTE 等)。對于表示執行計劃的子節點,這是 PLAN_ROW 類型。
Parallel0 = 運算符沒有以并行方式運行。
1 = 運算符正在以并行方式運行。
EstimateExecutions該運算符預計在當前查詢運行期間將執行的次數。

權限

SET SHOWPLAN_ALL 權限默認授予所有用戶。

示例

下面兩個語句使用 SET SHOWPLAN_ALL 設置,顯示 SQL Server 在查詢內對索引的使用進行分析和優化的方法。

第一個查詢在索引列上的 WHERE 子句中使用等于比較運算符 (=)。這在 LogicalOp 列內產生聚集索引查找值,在 Argument 列內產生索引名。

第二個查詢在 WHERE 子句中使用 LIKE 運算符。這將強制 SQL Server 使用聚集索引掃描并查找滿足 WHERE 子句條件的數據。這在含有 Argument 列內索引名的 LogicalOp 列內產生聚集索引掃描值,在含有 Argument 列內 WHERE 子句條件的 LogicalOp 列內產生篩選值。

EstimateRowsTotalSubtreeCost 列內用于第一個基于索引的查詢的值較小,這表示與非索引查詢相比,該查詢的處理速度快得多且使用更少的資源。

USE pubs GO SET SHOWPLAN_ALL ON GO -- First query. SELECT au_id FROM authors WHERE au_id = '409-56-7008' GO -- Second query. SELECT city FROM authors WHERE city LIKE 'San%' GO SET SHOWPLAN_ALL OFF GO

總結

以上是生活随笔為你收集整理的SQL SERVER 执行计划各字段注释的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。