Comment obtenir les statistiques existantes sur une colonne, le cas échéant?
-
03-07-2019 - |
Question
Je souhaite vérifier dans Transact SQL si une colonne spécifique d'un tableau contient des statistiques et, le cas échéant, pour les obtenir toutes.
La solution
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 dans une 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')
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow