3
Je veux vérifier dans Transact SQL si une colonne spécifique dans une table a des statistiques et si oui pour les obtenir tous.Comment obtenir les statistiques existantes sur une colonne, le cas échéant?
Je veux vérifier dans Transact SQL si une colonne spécifique dans une table a des statistiques et si oui pour les obtenir tous.Comment obtenir les statistiques existantes sur une colonne, le cas échéant?
Cette requête devrait le faire.
Je l'utilise dans un proc stocké qui parcourt la base de données pour trouver des statistiques.
Fonctionne dans SQL Server 2005 et probablement également dans la version antérieure.
SELECT S.NAME
FROM SYS.OBJECTS AS O
INNER JOIN SYS.STATS AS S
ON O.OBJECT_ID = S.OBJECT_ID
INNER JOIN SYS.STATS_COLUMNS AS SC
ON SC.OBJECT_ID = S.OBJECT_ID
AND S.STATS_ID = SC.STATS_ID
WHERE (O.OBJECT_ID = OBJECT_ID('MyTable','local'))
AND (O.TYPE IN ('U'))
AND (INDEXPROPERTY(S.OBJECT_ID,S.NAME,'IsStatistics') = 1) /* only stats */
AND (COL_NAME(SC.OBJECT_ID,SC.COLUMN_ID) = 'MyColumn')
Ajouter une autre où une partie « ET (S.USER_CREATED = 1) » est intéressant dans le cas où vous utilisez cette requête pour déposer les requêtes créées par l'utilisateur, à l'aide de cette façon: http://sqlsoundings.blogspot.be/2012 /06/delete-statistics.html –