Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Index manquant de SQL Server

Bonjour,

L'utilisation d'Index dans la base de données SQL Server se produit dans les environnements qui nécessitent le plus de performances, de vitesse et d'économies de mémoire.

Dans une table contenant des millions ou des milliards d'enregistrements, nous pouvons utiliser un index pour lire moins d'enregistrements et rechercher moins d'enregistrements associés.

Index créé avec précision, des millions d'enregistrements dans la base de données que nous avons recherchés en très peu de temps pour apporter l'enregistrement de la commodité de l'appelant, tout en lisant moins l'enregistrement en atteignant l'enregistrement cible, nous utilisons efficacement les ressources du système d'exploitation.

Vous devez créer un index pour la plupart des requêtes en lecture seule sur une table. Si les opérations de suppression et de mise à jour sont plus que des requêtes en lecture seule, vous ne devez pas créer d'index pour cette table.

Vous pouvez consulter la recommandation d'index manquante de SQL Server avec le script suivant. Vous pouvez créer des index manquants mais vous devez surveiller ces index. S'ils ne sont pas utiles, vous devez les supprimer.

SELECT MID.[statement] AS ObjectName
,MID.equality_columns AS EqualityColumns
,MID.inequality_columns AS InequalityColms
,MID.included_columns AS IncludedColumns
,MIGS.last_user_seek AS LastUserSeek
,MIGS.avg_total_user_cost 
* MIGS.avg_user_impact 
* (MIGS.user_seeks + MIGS.user_scans) AS Impact
,N'CREATE NONCLUSTERED INDEX <TYPE_Index_Name> ' + 
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 database_id = DB_ID()
AND MIGS.last_user_seek >= DATEDIFF(month, GetDate(), -1)
ORDER BY Impact DESC;