Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak sprawdzić, jakie procedury składowane używają jakich indeksów?

Masz liczbę wykonań dla wszystkich instrukcji w sys.dm_exec_query_stats i możesz wyodrębnić kod XML planu za pomocą sys.dm_exec_query_plan . Plan zawiera szczegóły, takie jak użyte operatory skanowania, więc między tymi dwoma możesz wymyślić wiele informacji z tego, o co prosisz. Na przykład następujące zapytanie pokaże operatory IndexScan w często uruchamianych instrukcjach z buforowanych planów, które powodują wiele logicznych odczytów:

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. Czy istnieje program SQL Server Profiler dla programu SQL Server Express?

  2. SQL Server 2005 - Error_Message() nie wyświetla pełnego komunikatu

  3. Wystąpił błąd podczas odszyfrowywania klucza głównego usługi

  4. Wywołanie procedury składowanej T-SQL przez ADO.NET powoduje wyjątek SqlTimeoutException

  5. Częściowe słowa w dowolnym tekście na serwerze SQL