sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan finder man ud af, hvilke lagrede procedurer bruger hvilke indekser?

Du har antallet af henrettelser for alle udsagn i sys.dm_exec_query_stats , og du kan udtrække plan-XML ved hjælp af sys.dm_exec_query_plan . Planen indeholder detaljer som brugte scanningsoperatorer, så mellem disse to kan du finde på en masse information ud fra det, du spørger om. For eksempel vil følgende forespørgsel vise dig IndexScan-operatorerne i de ofte kørende sætninger fra de cachelagrede planer, der forårsager mange logiske læsninger:

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. Hvordan gør man DB-adgang med Hibernate JPA-trådsikker?

  2. Forespørgsel ikke fuldført - MYSQL

  3. Parsing af en xml-fil og lagring af den i en database

  4. Gengiv com.mysql.jdbc.exceptions.jdbc4.CommunicationsException med en opsætning af Spring, Hibernate og C3P0