How to get statistics in a column, if any?

I want to check Transact SQL if there are statistics in a particular column of the table, and if so, to get them all.

+3
source share
1 answer

This request should do this.
I use it in a saved program that scans the database to find statistics.
Works in SQL Server 2005 and possibly an older version.

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')
+2
source

Source: https://habr.com/ru/post/1698384/


All Articles