Created
December 19, 2024 19:45
-
-
Save petesql/3c367cc44be62809272561d3dbe45e1d to your computer and use it in GitHub Desktop.
Show Missing Indexes SQL Server
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- This query retrieves and suggests missing index information from the DMV (Dynamic Management Views) in SQL Server. | |
-- It calculates an improvement measure for each missing index and generates a CREATE INDEX statement to address the missing index. | |
SELECT | |
CONVERT(varchar(30), GETDATE(), 126) AS runtime, | |
mig.index_group_handle, | |
mid.index_handle, | |
CONVERT(decimal(28, 1), migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans)) AS improvement_measure, | |
'CREATE INDEX missing_index_' + | |
CONVERT(varchar, mig.index_group_handle) + '_' + | |
CONVERT(varchar, mid.index_handle) + ' ON ' + | |
mid.statement + ' (' + | |
ISNULL(mid.equality_columns, '') + | |
CASE | |
WHEN mid.equality_columns IS NOT NULL AND mid.inequality_columns IS NOT NULL THEN ',' | |
ELSE '' | |
END + | |
ISNULL(mid.inequality_columns, '') + ')' + | |
ISNULL(' INCLUDE (' + mid.included_columns + ')', '') AS create_index_statement, | |
migs.*, | |
mid.database_id, | |
mid.[object_id] | |
FROM | |
sys.dm_db_missing_index_groups mig | |
INNER JOIN sys.dm_db_missing_index_group_stats migs | |
ON migs.group_handle = mig.index_group_handle | |
INNER JOIN sys.dm_db_missing_index_details mid | |
ON mig.index_handle = mid.index_handle | |
WHERE | |
CONVERT(decimal(28, 1), migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans)) > 10 | |
ORDER BY | |
migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans) DESC; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment