¿Cómo obtener las estadísticas existentes en una columna, si hay alguna?
-
03-07-2019 - |
Pregunta
Quiero comprobar en Transact SQL si una columna específica de una tabla tiene estadísticas y, de ser así, obtenerlas todas.
Solución
Esta consulta debería hacerlo.
Lo uso en un proceso almacenado que navega por la base de datos para encontrar estadísticas.
Funciona en SQL Server 2005 y probablemente también en una versión anterior.
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')
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow