index-maintenance

Version 6.4 by Gideon Lombard on 2023/05/18 05:52

Install these scripts from the maintenance package at https://ola.hallengren.com/

  1. CommandExecute.sql
  2. CommandLog.sql
  3. IndexOptimize.sql

Documentation for the index maintenance methods can be found here: SQL Server Index and Statistics Maintenance (hallengren.com)

Fragmented Index & Statistics

EXECUTE dbo.IndexOptimize
@Databases = 'Everest_PreProd',
@FragmentationLow = NULL,
@FragmentationMedium = 'INDEX_REORGANIZE,INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
@FragmentationHigh = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
@FragmentationLevel1 = 5,
@FragmentationLevel2 = 30,
@UpdateStatistics = 'ALL',
@FillFactor = 80,
@Execute  = 'Y',
@LogToTable = 'Y'

Unused indexes


--// https://www.sqlshack.com/how-to-identify-and-monitor-unused-indexes-in-sql-server/

SELECT
   schema_name(objects.schema_id) schema_name,
 objects.name AS Table_name,
    indexes.name AS Index_name,
    dm_db_index_usage_stats.user_seeks,
    dm_db_index_usage_stats.user_scans,
    dm_db_index_usage_stats.user_updates
FROM
    sys.dm_db_index_usage_stats
   INNER JOIN sys.objects ON dm_db_index_usage_stats.OBJECT_ID = objects.OBJECT_ID
   INNER JOIN sys.indexes ON indexes.index_id = dm_db_index_usage_stats.index_id AND dm_db_index_usage_stats.OBJECT_ID = indexes.OBJECT_ID
WHERE
    indexes.is_primary_key = 0 --This line excludes primary key constarint
   AND
    indexes.is_unique = 0 --This line excludes unique key constarint
   AND
    dm_db_index_usage_stats.user_updates <> 0 -- This line excludes indexes SQL Server hasn’t done any work with
   AND
    dm_db_index_usage_stats.user_lookups = 0
   AND
    dm_db_index_usage_stats.user_seeks = 0
   AND
    dm_db_index_usage_stats.user_scans = 0
ORDER BY
    dm_db_index_usage_stats.user_updates DESC
Tags: