@@ -342,6 +342,25 @@ DECLARE @QueryStoreTimeFrom datetimeoffset = IIF(
342342 @QueryStoreCustomTimeEnd
343343 );
344344
345+ -- Opportunistically update statistics on Query Store internal tables
346+ BEGIN TRY
347+
348+ UPDATE STATISTICS sys .plan_persist_context_settings ;
349+ UPDATE STATISTICS sys .plan_persist_plan ;
350+ UPDATE STATISTICS sys .plan_persist_plan_feedback ;
351+ UPDATE STATISTICS sys .plan_persist_query ;
352+ UPDATE STATISTICS sys .plan_persist_query_hints ;
353+ UPDATE STATISTICS sys .plan_persist_query_template_parameterization ;
354+ UPDATE STATISTICS sys .plan_persist_query_text ;
355+ UPDATE STATISTICS sys .plan_persist_runtime_stats ;
356+ UPDATE STATISTICS sys .plan_persist_runtime_stats_interval ;
357+ UPDATE STATISTICS sys .plan_persist_wait_stats ;
358+
359+ END TRY
360+ BEGIN CATCH
361+ RAISERROR (' Query Store statistics not updated, possibly due to insufficient permissions' , 10 , 1 );
362+ END CATCH ;
363+
345364-- query wait stats aggregated by query hash and wait category
346365WITH
347366query_wait_stats AS
@@ -1767,6 +1786,21 @@ IF EXISTS (SELECT 1 FROM @TipDefinition WHERE tip_id IN (1480,1490,1500) AND exe
17671786BEGIN TRY
17681787
17691788WITH
1789+ index_size AS
1790+ (
1791+ SELECT p .object_id ,
1792+ p .index_id ,
1793+ SUM (ps .used_page_count ) * 8 / 1024 . AS total_index_size_mb
1794+ FROM sys .partitions AS p
1795+ INNER JOIN sys .dm_db_partition_stats AS ps
1796+ ON p .partition_id = ps .partition_id
1797+ AND
1798+ p .object_id = ps .object_id
1799+ AND
1800+ p .index_id = ps .index_id
1801+ GROUP BY p .object_id ,
1802+ p .index_id
1803+ ),
17701804candidate_index AS
17711805(
17721806SELECT QUOTENAME (OBJECT_SCHEMA_NAME (o .object_id )) COLLATE DATABASE_DEFAULT AS schema_name ,
@@ -1776,10 +1810,15 @@ SELECT QUOTENAME(OBJECT_SCHEMA_NAME(o.object_id)) COLLATE DATABASE_DEFAULT AS sc
17761810 i .is_disabled ,
17771811 i .fill_factor ,
17781812 IIF (i .fill_factor > 0 AND i .fill_factor < @FillFactorThreshold, 1 , 0 ) AS is_low_fill_factor,
1779- IIF (i .type_desc = ' CLUSTERED' AND i .is_unique = 0 , 1 , 0 ) AS is_non_unique_clustered
1813+ IIF (i .type_desc = ' CLUSTERED' AND i .is_unique = 0 , 1 , 0 ) AS is_non_unique_clustered,
1814+ ins .total_index_size_mb
17801815FROM sys .objects AS o
17811816INNER JOIN sys .indexes AS i
17821817ON o .object_id = i .object_id
1818+ INNER JOIN index_size AS ins
1819+ ON o .object_id = ins .object_id
1820+ AND
1821+ i .index_id = ins .index_id
17831822WHERE o .is_ms_shipped = 0
17841823 AND
17851824 o .type_desc IN (' USER_TABLE' ,' VIEW' )
@@ -1796,6 +1835,7 @@ SELECT td.tip_id,
17961835 ' , object: ' , object_name ,
17971836 ' , index: ' + index_name,
17981837 IIF (ci .is_non_unique_clustered = 1 AND td .tip_id = 1500 , ' ' , CONCAT (' , index type: ' , index_type)),
1838+ ' , index size (MB): ' , FORMAT (total_index_size_mb, ' #,0.00' ),
17991839 IIF (ci .is_low_fill_factor = 1 AND td .tip_id = 1490 , CONCAT (' , fill_factor: ' , ci .fill_factor ), ' ' )
18001840 )
18011841 AS nvarchar (max )
0 commit comments