193
6.4 Statistiques
6.4.5 Maintien des statistiques
Consultation
Nous pouvons vérifier la présence de statistique de plusieurs manières :
• sp_helpstats : est l’ancienne méthode d’obtention des statistiques. Ne l’utilisez plus et préférez les vues de catalogues suivantes.
• sys.stats : liste des statistiques présentes dans la base de données.
• sys.stats_columns : colonnes présentes pour chaque statistique.
SELECT *
FROM sys.stats s
JOIN sys.stats_columns sc ON s.object_id = sc.object_id
AND s.stats_id = sc.stats_id
JOIN sys.columns c ON s.object_id = c.object_id
AND sc.column_id = c.column_id
• STATS_DATE() : vous pouvez récupérer la date de dernière mise à jour des statistiques en utilisant la nouvelle fonction STATS_DATE() de SQL Server 2005, à
laquelle vous passez un ID de table et un ID d’index.
SELECT OBJECT_NAME(i.object_id) AS table_name,
i.name AS index_name,
STATS_DATE(i.object_id, i.index_id)
FROM sys.indexes AS i
WHERE OBJECT_NAME(i.object_id) = N'TransactionHistory'
• DBCC SHOW_STATISTICS : comme nous l’avons déjà vu, DBCC SHOW_STATISTICS
affiche les détails d’un jeu de statistiques.
Création
Les statistiques sur les index sont créées automatiquement, sans possibilité de
désactivation : un index sans statistiques serait inutilisable.
Les statistiques sur les colonnes non indexées peuvent être créées manuellement
ou automatiquement.
Par défaut, les bases de données sont créées avec l’option
AUTO_CREATE_STATISTICS à ON, c’est-à-dire que les statistiques dont l’optimiseur de
requêtes a besoin pour générer son plan d’exécution seront générées à la volée. Certes, il y aura un ralentissement du service de la requête dû à la création des statistiques, mais cela ne se produira que la première fois : potentiellement ce
ralentissement sera moindre que celui induit par un plan d’exécution mal évalué.
Cette fonctionnalité, de création et mise à jour automatique des statistiques par SQL
Server, est appelée Auto Stats. Pour créer manuellement des statistiques sur une ou
plusieurs colonnes, vous pouvez utiliser la commande CREATE STATISTICS:
CREATE STATISTICS statistics_name
ON { table | view } ( column [ ,...n ] )
[ WITH
Précédent

- 205/334

Suivant