|
Query Store SP:
Ausführung z.b.
EXEC master.dbo.sp_WhatsupQueryStore
@dbname = 'DeineDatenbank',
@timewindow = 2, -- letzte 2 Stunde
@topqueries = 25,
@return_top_log_read = 1,
@return_top_phys_read = 1,
@return_top_cpu = 1,
@return_multiple_plans = 1;
Abfrage für Kostenintensive Queris:
DECLARE @from datetime2(0) = '2026-02-23T08:00:00'; -- anpassen (QS-Intervallzeiten)
DECLARE @to datetime2(0) = '2026-02-23T09:00:00'; -- anpassen
SELECT TOP (30)
i.start_time,
i.end_time,
total_logical_reads = SUM(rs.avg_logical_io_reads * rs.count_executions),
execs = SUM(rs.count_executions),
reads_per_exec = CAST(
SUM(rs.avg_logical_io_reads * rs.count_executions) * 1.0
/ NULLIF(SUM(rs.count_executions), 0)
AS decimal(18,2)),
query_text = LEFT(MAX(qt.query_sql_text), 2000)
FROM sys.query_store_runtime_stats rs
JOIN sys.query_store_runtime_stats_interval i
ON rs.runtime_stats_interval_id = i.runtime_stats_interval_id
JOIN sys.query_store_plan p
ON rs.plan_id = p.plan_id
JOIN sys.query_store_query q
ON p.query_id = q.query_id
JOIN sys.query_store_query_text qt
ON q.query_text_id = qt.query_text_id
WHERE i.start_time >= @from
AND i.end_time <= @to
GROUP BY i.start_time, i.end_time, q.query_id
ORDER BY total_logical_reads DESC;
Anzeige der Indizies und Abfrage der Usage der Indizies:
sp_helpindex 'dbo.DeineDatenbankTabelle'
SELECT
i.name,
s.user_seeks, s.user_scans, s.user_lookups, s.user_updates
FROM sys.indexes i
LEFT JOIN sys.dm_db_index_usage_stats s
ON s.object_id = i.object_id
AND s.index_id = i.index_id
AND s.database_id = DB_ID()
WHERE i.object_id = OBJECT_ID('dbo.PriceHistory')
ORDER BY (ISNULL(s.user_seeks,0) + ISNULL(s.user_scans,0) + ISNULL(s.user_lookups,0)) DESC;
|