|
| 1 | +SET ANSI_NULLS ON |
| 2 | +GO |
| 3 | +SET QUOTED_IDENTIFIER ON |
| 4 | +GO |
| 5 | +CREATE OR ALTER PROCEDURE [dbo].[spReport_INDEX_Missing_Index_Recommendations] |
| 6 | +@argDBName VARCHAR(128), @argObject_Name VARCHAR(128), @argTop_N SMALLINT |
| 7 | +AS |
| 8 | +BEGIN |
| 9 | + |
| 10 | +IF @argTop_N IS NULL |
| 11 | + SELECT @argTop_N = 500 |
| 12 | + |
| 13 | +SELECT TOP (@argTop_N) |
| 14 | +CONVERT(DECIMAL(20,2), migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans)) AS Total_Impact, |
| 15 | + db_name(mid.database_id) AS DB_Name, |
| 16 | + object_name(mid.object_id, mid.database_id) AS Object_Name, |
| 17 | + mid.equality_columns, mid.inequality_columns, mid.included_columns, |
| 18 | + CONVERT(DECIMAL(20, 2), migs.avg_total_user_cost) AS avg_total_user_cost, |
| 19 | + CONVERT(DECIMAL(20, 2), migs.avg_user_impact) AS avg_user_impact, |
| 20 | + migs.user_seeks, migs.user_scans, migs.unique_compiles, |
| 21 | + migs.last_user_seek, migs.last_user_scan, migs.system_seeks, migs.system_scans, migs.last_system_seek, |
| 22 | + migs.last_system_scan, migs.avg_total_system_cost, migs.avg_system_impact, |
| 23 | + migs.group_handle, mid.statement |
| 24 | +FROM sys.dm_db_missing_index_group_stats AS migs |
| 25 | + INNER JOIN sys.dm_db_missing_index_groups AS mig ON (migs.group_handle = mig.index_group_handle) |
| 26 | + INNER JOIN sys.dm_db_missing_index_details AS mid ON (mig.index_handle = mid.index_handle) |
| 27 | +WHERE (mid.database_id = DB_ID(@argDBName) OR @argDBName IS NULL) AND |
| 28 | + ((object_name(mid.object_id, mid.database_id) LIKE '%' + @argObject_Name + '%') OR (@argObject_Name IS NULL)) |
| 29 | +ORDER BY migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans) DESC |
| 30 | + |
| 31 | +END |
| 32 | + |
0 commit comments