1

Oracleには、共有SQL領域の統計を一覧表示し、SQL文字列ごとに1行を含むV$SQLAREAというビューがあります。これは、メモリ内にあり、解析され、実行の準備ができているSQLステートメントに関する統計を提供します。

このSQLステートメントに代わって処理された行の総数を合計する1つの列-ROWS_PROCESSEDがあります。

SQLSERVER2005の販促資料情報を探しています。

一部のDMV(sys.dm_exec_query_statsなど)を調べましたが、関連するものは見つかりませんでした。

@@ ROWCOUNTは、データベース内の上位のcpu / io /execution消費クエリのrows_processedを合計する増分統計情報が必要なため、役に立ちません。

この件に関して何か助けていただければ幸いです。

前もって感謝します、

ロニ。


次のクエリをクエリすると、XMLでクエリプランを受け取ることがわかりました。

XMLプランコード内には、クエリの推定行数に相関する数値を持つ「EstimateRows」部分があります。

上記の情報のみを取得するためにquery_plan列をsubstrするオプションを考えています(一部のシステムビュー/テーブルで見つからない場合を除く)。

クエリの実際の行数はどこにありますか?どこに保管されていますか?

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;
4

2 に答える 2

2

私の知る限り、特に行数に直接相当するものはありません。関連するdmvsは、欠落しているインデックス付きの最も高価なクエリなどを表示するために使用されるIOコストを追跡します

これにより、現在のセッションのSQLステートメントごとの統計が得られます。YMMV:私がうそをついているスクリプトに基づいてそれをまとめました。

SELECT 
    *
FROM 
    sys.dm_exec_query_stats  QS
    CROSS APPLY 
    sys.dm_exec_sql_text(sql_handle) ST

私のスクリプトは、ここで言及したリンクに基づいています

于 2010-11-08T11:35:48.880 に答える
0

システム変数@@rowcountを使用して、最後のステートメントの影響を受けるレコードの数を知ることができます。

于 2010-11-08T12:37:47.050 に答える