sys.dm_db_missing_index_columns (Transact-SQL)

Возвращает сведения о столбцах таблицы базы данных с отсутствующими индексами, за исключением пространственных индексов. Функция sys.dm_db_missing_index_columns является функцией динамического управления.

Синтаксис

sys.dm_db_missing_index_columns(index_handle)

Аргументы

  • index_handle
    Целочисленное значение, уникальным образом идентифицирующее отсутствующий индекс. Его можно получить из следующих объектов DMO.

    sys.dm_db_missing_index_details

    sys.dm_db_missing_index_groups

Возвращенная таблица

Имя столбца

Тип данных

Описание

column_id

int

Идентификатор столбца.

column_name

sysname

Имя столбца таблицы.

column_usage

varchar(20)

Способ использования столбца запросом. Допустимые значения:

ЗначениеОписание
EQUALITYСтолбец участвует в предикате, выражающем равенство, в формате: table.column =constant_value
INEQUALITYСтолбец участвует в предикате, выражающем неравенство, например предикат в формате: таблица.столбец > значение_константы Любой оператор сравнения, кроме «=», выражает неравенство. Полный список операторов сравнения см. в разделе Операторы сравнения (компонент Database Engine).
INCLUDEСтолбец используется не для вычисления предиката, а в других целях, например для охвата запроса.

Замечания

Сведения, возвращаемые функцией sys.dm_db_missing_index_columns, обновляются при оптимизации запроса оптимизатором запросов и не сохраняются. Сведения об отсутствующих индексах хранятся только до перезапуска SQL Server. Администраторы базы данных должны периодически делать резервные копии сведений об отсутствующих индексах, чтобы сохранить их после перезагрузки сервера.

Дополнительные сведения о включении и отключении коллекции сведений об отсутствующих индексах см. в разделе О функции отсутствующих индексов.

Вывод функции динамического управления sys.dm_db_missing_index_columns может использоваться любым средством, которому доступно считывание данных об отсутствующем индексе, соответствующем дескриптору index_handle, обработка этих данных и преобразование в DDL-инструкции CREATE INDEX, реализующие отсутствующий индекс. Дополнительные сведения о создании DDL-инструкций см. в разделе Использование сведений об отсутствующих индексах для формирования инструкций CREATE INDEX.

Дополнительные сведения об ограничении этой возможности см. в разделе Ограничения на использование функции отсутствующих индексов.

Согласованность транзакций

Если транзакция создает или удаляет таблицу, то строки, содержащие сведения отсутствующих индексов об удаленных объектах, удаляются из данного объекта DMO, сохраняя согласованность транзакций. Дополнительные сведения о последовательности транзакций относительно отсутствующих индексов объектов DMO см. в разделе О функции отсутствующих индексов.

Разрешения

Пользователям необходимо предоставить разрешение VIEW SERVER STATE или любое разрешение, которое подразумевает разрешение VIEW SERVER STATE, чтобы выполнить запрос к этой функции динамического управления.

Примеры

В следующем примере выполняется запрос к таблице Address, а затем выполняется запрос с использованием динамического административного представления sys.dm_db_missing_index_columns для возврата столбцов таблицы, отсутствующих в индексе.

USE AdventureWorks2008R2;
GO
SELECT City, StateProvinceID, PostalCode
FROM Person.Address
WHERE StateProvinceID = 9;
GO
SELECT mig.*, statement AS table_name,
    column_id, column_name, column_usage
FROM sys.dm_db_missing_index_details AS mid
CROSS APPLY sys.dm_db_missing_index_columns (mid.index_handle)
INNER JOIN sys.dm_db_missing_index_groups AS mig ON mig.index_handle = mid.index_handle
ORDER BY mig.index_group_handle, mig.index_handle, column_id;
GO