sql >> データベース >  >> RDS >> Sqlserver

どのストアド プロシージャがどのインデックスを使用しているかを調べる方法は?

    sys.dm_exec_query_stats にすべてのステートメントの実行回数があります。 、および sys.dm_exec_query_plan を使用してプラン XML を抽出できます。 .計画には、使用されたスキャン オペレーターなどの詳細が含まれているため、これら 2 つの間で、質問内容から多くの情報を作成できます。たとえば、次のクエリは、多くの論理読み取りを引き起こしているキャッシュされたプランから頻繁に実行されるステートメントの IndexScan 演算子を表示します。

    with xmlnamespaces ('http://schemas.microsoft.com/sqlserver/2004/07/showplan' as sp)
    select top(100) 
      q.total_logical_reads, q.execution_count
      , x.value(N'@Database', N'sysname') as [Database]
      , x.value(N'@Schema', N'sysname') as [Schema]
      , x.value(N'@Table', N'sysname') as [Table]
      , x.value(N'@Index', N'sysname') as [Index]
      , substring(t.text, q.statement_start_offset/2,   
      case when 0 < q.statement_end_offset then (q.statement_end_offset - q.statement_start_offset)/2
      else len(t.text) - q.statement_start_offset/2 end) as [Statement]
    from sys.dm_exec_query_stats q
    cross apply sys.dm_exec_query_plan(plan_handle)
    cross apply sys.dm_exec_sql_text(sql_handle) as t
    cross apply query_plan.nodes(N'//sp:IndexScan/sp:Object') s(x)
    where execution_count > 100
    order by total_logical_reads desc;
    


    1. cPanelMySQLデータベースウィザードの使用方法

    2. androidリモートデータベース接続の問題

    3. Railsトランザクション

    4. IBMDB2とIRIソフトウェアの接続