Выбор индексов на основе имен столбцов / таблиц - PullRequest
0 голосов
/ 13 июля 2009

Существует ли системный SP или dmv, который позволяет мне выбирать индексы в моей БД на основе столбцов и имен таблиц?

То, что я пытаюсь сделать, это удалить индексы на основе столбцов со строковыми типами данных, так как я нахожусь в процессе изменения настроек сортировки.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 13 июля 2009

Вы всегда можете определить индексы для данного столбца и / или таблицы, запросив представления sys.indexes и sys.index_columns:

SELECT
    i.Name 'Index Name',
    OBJECT_NAME(i.object_ID) 'Table Name',
    c.Name 'Column Name'
FROM  
   sys.indexes i 
INNER JOIN 
   sys.index_columns ic ON i.index_id = ic.index_id AND i.object_id = ic.object_id
INNER JOIN
   sys.columns c ON ic.column_id = c.column_id AND ic.object_id = c.object_id
WHERE 
  c.name = 'Index column name'      -- this for a column name
  -- OBJECT_NAME(i.OBJECT_ID) = 'Table Name'   -- this for table name

Марк

1 голос
/ 13 июля 2009

вам нужно четыре вида системы:

sys.indexes, sys.index_columns, sys.columns и sys.objects. sys.objects содержит имя таблицы, sys.columns. содержит object_id таблицы и тип столбца, sys.index_columns содержит идентификатор столбца, который присутствует в индексах и идентификатор индекса, sys.indexes содержит идентификатор индекса.

edit: yes, sys.objects не обязателен. Танки @ Марк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...