SQL Server 2005で処理された統計情報を実行します
-
29-09-2019 - |
質問
Oracleには、共有SQL領域の統計をリストし、SQL文字列ごとに1つの行を含むV $ SQLAREAと呼ばれるビューがあります。これは、メモリ、解析、および実行の準備ができているSQLステートメントの統計を提供します。
このSQLステートメントに代わって処理された行の総数を合計する列-ROWS_PROCESSEDが1つあります。
SQLServer 2005で担保情報を探しています。
私はDMVのいくつかを見ました(sys.dm_exec_query_statsなど)が、関連するものは見つかりませんでした。
@@ rowcountは、データベースのトップCPU/io/実行消費クエリのrows_processedを合計する増分統計情報が必要なので、私にとって役に立ちません。
主題に関してどんな助けにも感謝します。
前もって感謝します、
ロニ。
次のクエリを照会すると、XMLでクエリプランを受け取ることがわかりました。
XMLプランコード内には、クエリの推定行の数に相関する数の「推定値」部分があります。
Query_Plan列をsubtrするオプションを考えています。上記の情報のみを再調整します(システムビュー/テーブルで見つける場合を除く)。
クエリの実際の行数はどこにありますか?どこに保管されていますか?
SELECT
case when sql_handle IS NULL
then ' '
else ( substring(st.text,(statement_start_offset+2)/2,
(case when qs.statement_end_offset = -1
then len(convert(nvarchar(MAX),st.text))*2
else statement_end_offset
end - statement_start_offset) /2 ) )
end as query_text ,
query_plan,
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle)
cross apply sys.dm_exec_sql_text(sql_handle) st;
解決
私の知る限り、特にrowCountsには直接的な同等物はありません。関連するDMVSトラックIOコストは、欠落しているインデックス付き、最も高価なクエリなどを表示するために使用されます。
これにより、現在のセッションのSQLステートメントあたりの統計が得られます。 YMMV:私が横たわっているスクリプトに基づいてそれをまとめました。
SELECT
*
FROM
sys.dm_exec_query_stats QS
CROSS APPLY
sys.dm_exec_sql_text(sql_handle) ST
私のスクリプトはリンクiに基づいています ここで言及されています
他のヒント
システム変数@@ rowcountを使用して、最後のステートメントの影響を受けるレコードの数を知ることができます。