@@ -5182,28 +5182,6 @@ BEGIN
51825182 RAISERROR (N ' @Mode=4, running rules for priorities 101+.' , 0 ,1 ) WITH NOWAIT ;
51835183
51845184 RAISERROR (N ' check_id 21: More Than 5 Percent NC Indexes Are Unused' , 0 ,1 ) WITH NOWAIT ;
5185- DECLARE @percent_NC_indexes_unused NUMERIC (29 ,1 );
5186- DECLARE @NC_indexes_unused_reserved_MB NUMERIC (29 ,1 );
5187-
5188- SELECT @percent_NC_indexes_unused = ( 100 .00 * SUM (CASE
5189- WHEN total_reads = 0
5190- THEN 1
5191- ELSE 0
5192- END ) ) / COUNT (* ),
5193- @NC_indexes_unused_reserved_MB = SUM (CASE
5194- WHEN total_reads = 0
5195- THEN sz .total_reserved_MB
5196- ELSE 0
5197- END )
5198- FROM #IndexSanity i
5199- JOIN #IndexSanitySize sz ON i .index_sanity_id = sz .index_sanity_id
5200- WHERE index_id NOT IN ( 0 , 1 )
5201- AND i .is_unique = 0
5202- /* Skipping tables created in the last week, or modified in past 2 days*/
5203- AND i .create_date < DATEADD (dd,- 7 ,GETDATE ())
5204- AND i .modify_date < DATEADD (dd,- 2 ,GETDATE ())
5205- OPTION ( RECOMPILE );
5206- IF @percent_NC_indexes_unused >= 5
52075185 INSERT #BlitzIndexResults ( check_id, index_sanity_id, Priority, findings_group, finding, [database_name], URL , details, index_definition,
52085186 secret_columns, index_usage_summary, index_size_summary )
52095187 SELECT 21 AS check_id,
@@ -5213,8 +5191,8 @@ BEGIN
52135191 N ' More Than 5 Percent NC Indexes Are Unused' AS finding,
52145192 [database_name] AS [Database Name],
52155193 N ' https://www.brentozar.com/go/IndexHoarder' AS URL ,
5216- CAST (@ percent_NC_indexes_unused AS NVARCHAR (30 )) + N ' percent NC indexes (' + CAST (COUNT (* ) AS NVARCHAR (10 )) + N ' ) unused. ' +
5217- N ' These take up ' + CAST (@ NC_indexes_unused_reserved_MB AS NVARCHAR (30 )) + N ' MB of space.' AS details,
5194+ CAST (MAX ( perc . percent_NC_indexes_unused ) AS NVARCHAR (30 )) + N ' percent NC indexes (' + CAST (COUNT (* ) AS NVARCHAR (10 )) + N ' ) unused. ' +
5195+ N ' These take up ' + CAST (MAX ( perc . NC_indexes_unused_reserved_MB ) AS NVARCHAR (30 )) + N ' MB of space.' AS details,
52185196 i .database_name + ' (' + CAST (COUNT (* ) AS NVARCHAR (30 )) + N ' indexes)' AS index_definition,
52195197 ' ' AS secret_columns,
52205198 CAST (SUM (total_reads) AS NVARCHAR (256 )) + N ' reads (ALL); '
@@ -5229,12 +5207,26 @@ BEGIN
52295207 END AS index_size_summary
52305208 FROM #IndexSanity i
52315209 JOIN #IndexSanitySize sz ON i .index_sanity_id = sz .index_sanity_id
5210+ JOIN (
5211+ SELECT i .database_name ,
5212+ CAST ((100 .00 * SUM (CASE WHEN total_reads = 0 THEN 1 ELSE 0 END )) / COUNT (* ) AS NUMERIC (29 ,1 )) AS percent_NC_indexes_unused,
5213+ CAST (SUM (CASE WHEN total_reads = 0 THEN sz .total_reserved_MB ELSE 0 END ) AS NUMERIC (29 ,1 )) AS NC_indexes_unused_reserved_MB
5214+ FROM #IndexSanity i
5215+ JOIN #IndexSanitySize sz ON i .index_sanity_id = sz .index_sanity_id
5216+ WHERE index_id NOT IN ( 0 , 1 )
5217+ AND i .is_unique = 0
5218+ /* Skipping tables created in the last week, or modified in past 2 days*/
5219+ AND i .create_date < DATEADD (dd,- 7 ,GETDATE ())
5220+ AND i .modify_date < DATEADD (dd,- 2 ,GETDATE ())
5221+ GROUP BY i .database_name
5222+ ) AS perc ON i .database_name = perc .database_name
52325223 WHERE index_id NOT IN ( 0 , 1 )
52335224 AND i .is_unique = 0
52345225 AND total_reads = 0
52355226 /* Skipping tables created in the last week, or modified in past 2 days*/
52365227 AND i .create_date < DATEADD (dd,- 7 ,GETDATE ())
52375228 AND i .modify_date < DATEADD (dd,- 2 ,GETDATE ())
5229+ AND perc .percent_NC_indexes_unused >= 5
52385230 GROUP BY i .database_name
52395231 OPTION ( RECOMPILE );
52405232
0 commit comments