SQL SERVER – Buscar índices que faltan en todas las bases de datos de un servidor
Mediante este código de SQL SERVER, se pueden buscar los índices que faltan en todas las bases de datos de un servidor, y genera el código necesario a ejecutar para crearlos en una sola instrucción:
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT db_name(database_id) as base,
MID.[statement] AS ObjectName
,MIGS.last_user_seek AS LastUserSeek
,MIGS.avg_user_impact
,(MIGS.user_seeks + MIGS.user_scans) as uso
,ROUND(MIGS.avg_total_user_cost
* MIGS.avg_user_impact
* (MIGS.user_seeks + MIGS.user_scans),0) AS Impact
,N’CREATE NONCLUSTERED INDEX TRIGGERDB_IDX1_’ + MID.[statement] +
N’ ON ‘ + MID.[statement] +
N’ (‘ + MID.equality_columns
+ ISNULL(‘, ‘ + MID.inequality_columns, N”) +
N’) ‘ + ISNULL(N’INCLUDE (‘ + MID.included_columns + N’);’, ‘;’)
AS CreateStatement
FROM sys.dm_db_missing_index_group_stats AS MIGS
INNER JOIN sys.dm_db_missing_index_groups AS MIG
ON MIGS.group_handle = MIG.index_group_handle
INNER JOIN sys.dm_db_missing_index_details AS MID
ON MIG.index_handle = MID.index_handle
WHERE db_name(database_id) = ‘nombreBaseDatos’ — Si comentas esta linea te saca indices faltantes de todas las bases del servidor.
ORDER BY Impact DESC
Esperamos os resulte de utilidad.
Cortesía de Infortécnica