Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да намеря какви съхранени процедури използват какви индекси?

Имате броя изпълнения за всички оператори в sys.dm_exec_query_stats и можете да извлечете XML плана с помощта на sys.dm_exec_query_plan . Планът съдържа подробности като използвани оператори за сканиране, така че между тези два можете да съставите много информация от това, което питате. Например следната заявка ще ви покаже операторите 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да конвертирате низ в цяло число - странен формат

  2. Невъзможност за отдалечен достъп до екземпляр на SQL Server 2008 R2

  3. Как да добавите потребителска група на Active Directory като вход в SQL Server

  4. T-SQL:Закръгля до най-близкия интервал от 15 минути

  5. Преобразувайте smallint във време