Voici deux petites requêtes pour visualiser et créer les index manquants sous MS SQL Server 2005/2008
Visulation des index manquants pour une base particulière :
USE <mabase>;
GO
SELECT statement AS TABLE_NAME,
CASE WHEN equality_columns IS NOT NULL
AND inequality_columns IS NOT NULL
THEN equality_columns + ', ' + inequality_columns
WHEN equality_columns IS NOT NULL
AND inequality_columns IS NULL
THEN equality_columns
WHEN equality_columns IS NULL
AND inequality_columns IS NOT NULL
THEN inequality_columns
END AS INDEX_KEY,
included_columns AS COL_INCLUDE
FROM sys.dm_db_missing_index_details
WHERE database_id = DB_ID()
ORDER BY 1, 2;
-- créer tous les index manquants en une seule requête avec un FILL FACTOR de 90%
SELECT 'CREATE INDEX X_' + REPLACE(CAST(NEWID() AS VARCHAR(50)), '-', '')
+ ' ON ' + statement +' ('
+ CASE WHEN equality_columns IS NOT NULL
AND inequality_columns IS NOT NULL
THEN equality_columns + ', ' + inequality_columns + ' )'
WHEN equality_columns IS NOT NULL
AND inequality_columns IS NULL
THEN equality_columns + ' )'
WHEN equality_columns IS NULL
AND inequality_columns IS NOT NULL THEN inequality_columns + ' )'
END
+ CASE WHEN included_columns IS NOT NULL
THEN ' INCLUDE (' + included_columns + ')' ELSE ''
END
+ ' WITH (FILLFACTOR = 90);'
FROM sys.dm_db_missing_index_details
WHERE database_id = DB_ID();
-- ou encore :
SELECT 'CREATE INDEX X_' + REPLACE(CAST(NEWID() AS VARCHAR(50)), '-', '')
+ ' ON ' + statement +' ('
+ COALESCE(equality_columns + ', ' + inequality_columns, equality_columns, inequality_columns) +')'
+ COALESCE(' INCLUDE (' + included_columns +')', '')
+ ' WITH (FILLFACTOR = 90);'
FROM sys.dm_db_missing_index_details
WHERE database_id = DB_ID()
--------
Frédéric Brouard, SQLpro - ARCHITECTE DE DONNÉES, http://sqlpro.developpez.com/
Expert bases de données relationnelles et langage SQL. MVP Microsoft SQL Server
www.sqlspot.com : modélisation, conseil, audit, optimisation, tuning, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
Non, mieux vaut analyser la chose, sauf si peu de demandes ou très petite base !
Salut Fred,
Est ce que par ce script tu recommandes une reconstruction automatique des index manquants ou il faut prendre cela avec partimonie et voir quels index manquants seront vraiment utiles ?
++