Saturday 10 June 2017

How to check SQL Database missing Index

  1. SELECT   
  2. dm_mid.database_id AS DatabaseID,  
  3. dm_migs.avg_user_impact*(dm_migs.user_seeks+dm_migs.user_scans) Avg_Estimated_Impact,  
  4. dm_migs.last_user_seek AS Last_User_Seek,  
  5. OBJECT_NAME(dm_mid.OBJECT_ID,dm_mid.database_id) AS [TableName],  
  6. 'CREATE INDEX [IX_' + OBJECT_NAME(dm_mid.OBJECT_ID,dm_mid.database_id) + '_'  
  7. REPLACE(REPLACE(REPLACE(ISNULL(dm_mid.equality_columns,''),', ','_'),'[',''),']','')   
  8. CASE  
  9. WHEN dm_mid.equality_columns IS NOT NULL  
  10. AND dm_mid.inequality_columns IS NOT NULL THEN '_'  
  11. ELSE ''  
  12. END  
  13. REPLACE(REPLACE(REPLACE(ISNULL(dm_mid.inequality_columns,''),', ','_'),'[',''),']','')  
  14. ']'  
  15. ' ON ' + dm_mid.statement  
  16. ' (' + ISNULL (dm_mid.equality_columns,'')  
  17. CASE WHEN dm_mid.equality_columns IS NOT NULL AND dm_mid.inequality_columns   
  18. IS NOT NULL THEN ',' ELSE  
  19. '' END  
  20. ISNULL (dm_mid.inequality_columns, '')  
  21. ')'  
  22. ISNULL (' INCLUDE (' + dm_mid.included_columns + ')'''AS Create_Statement  
  23. FROM sys.dm_db_missing_index_groups dm_mig  
  24. INNER JOIN sys.dm_db_missing_index_group_stats dm_migs  
  25. ON dm_migs.group_handle = dm_mig.index_group_handle  
  26. INNER JOIN sys.dm_db_missing_index_details dm_mid  
  27. ON dm_mig.index_handle = dm_mid.index_handle  
  28. WHERE dm_mid.database_ID = DB_ID()  
  29. ORDER BY Avg_Estimated_Impact DESC  
  30. GO 

No comments:

Post a Comment