Как мы можем проверить, что таблица имеет индекс или нет? - PullRequest
13 голосов
/ 29 апреля 2010

Как мы можем проверить, что таблица имеет индекс или нет? если есть, как найти этот индекс для конкретного столбца для таблицы?

С уважением, Кумар

Ответы [ 3 ]

18 голосов
/ 29 апреля 2010

В SQL Server Management Studio вы можете перейти вниз по дереву к интересующей вас таблице и открыть узел индексов. Двойной щелчок по любому индексу в этом узле откроет диалоговое окно свойств, которое покажет, какие столбцы включены в индекс.

Если вы хотите использовать T-SQL, это может помочь:

SELECT
    sys.tables.name,
    sys.indexes.name,
    sys.columns.name
FROM sys.indexes
    INNER JOIN sys.tables ON sys.tables.object_id = sys.indexes.object_id
    INNER JOIN sys.index_columns ON sys.index_columns.index_id = sys.indexes.index_id
        AND sys.index_columns.object_id = sys.tables.object_id
    INNER JOIN sys.columns ON sys.columns.column_id = sys.index_columns.column_id
        AND sys.columns.object_id = sys.tables.object_id
WHERE sys.tables.name = 'TABLE NAME HERE'
ORDER BY
    sys.tables.name,
    sys.indexes.name,
    sys.columns.name
0 голосов
/ 19 мая 2010

порядок по имени столбца неправильный, вам нужно упорядочить по позиции в индексе, поэтому в качестве порядка по выражению следует указывать tabname, indname и sys.index_columns.index_column_id ...

0 голосов
/ 29 апреля 2010

Попробуйте

select object_name(object_id),* from sys.indexes 
where object_name(object_id) = 'your table name'
...