Как я могу получить список индексов, где вначале появляется определенный столбец индекса? - PullRequest
3 голосов
/ 11 февраля 2010

Я заметил, что у нас есть много индексов, которые начинаются с определенного столбца, и этот столбец имеет низкое количество элементов (т.е. компания и 99% записей принадлежат «живой» компании).

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

Итак, я хочу запустить скрипт, который найдет мне все индексы в базе данных, где этот индекс индексирует первый столбец, например, столбец с именем 'ROW_COMPANY'.

Я пробовал разные образцы и прочее, но я не получаю правильных результатов (то есть слишком много строк, строк, содержащих индексы, которые не начинаются с 'ROW_COMPANY').

Вы помогаете оценили !!

1 Ответ

4 голосов
/ 11 февраля 2010

Попробуйте это:

SELECT
    o.name TableName
    , c.name ColumnName
    , i.name IndexName
FROM
    sys.index_columns ic
    INNER JOIN sys.indexes i ON ic.object_id = i.object_id 
                            AND ic.index_id = i.index_id
    INNER JOIN sys.columns c ON ic.object_id = c.object_id 
                            AND ic.column_id = c.column_id
    INNER JOIN sys.objects o ON ic.object_id = o.object_id
WHERE
    o.is_ms_shipped = 0
    AND c.name = 'ROW_COMPANY'
    AND ic.index_column_id = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...