Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm thế nào để tìm thấy những Thủ tục đã Lưu trữ đang sử dụng những chỉ mục nào?

Bạn có số lần thực thi cho tất cả các câu lệnh trong sys.dm_exec_query_stats và bạn có thể trích xuất XML kế hoạch bằng cách sử dụng sys.dm_exec_query_plan . Kế hoạch chứa các chi tiết như toán tử quét được sử dụng, vì vậy giữa hai toán tử này, bạn có thể tạo ra nhiều thông tin từ những gì bạn yêu cầu. Ví dụ:truy vấn sau sẽ hiển thị cho bạn các toán tử IndexScan trong các câu lệnh thường chạy từ các kế hoạch được lưu trong bộ nhớ cache gây ra nhiều lần đọc logic:

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. Cách tạo truy vấn SQL động bên trong CURSOR

  2. Cách đổi tên khóa JSON trong SQL Server (T-SQL)

  3. Cú pháp GRANT cho miền \ người dùng

  4. DESC và ASC như một tham số trong thủ tục được lưu trữ

  5. SQL Server SHOW TABLES Tương đương