sys.dm_db_missing_index_columns (Transact-SQL)

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

Синтаксис

sys.dm_db_missing_index_columns(index_handle)

Аргументы

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

Имя столбца

Тип данных

Описание

column_id

int

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

column_name

sysname

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

column_usage

varchar(20)

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

Значение

Описание

EQUALITY

Столбец участвует в предикате, выражающем равенство, в формате:

table.column =constant_value

INEQUALITY

Столбец участвует в предикате, выражающем неравенство, например предикат в формате:

table.column > constant_value

Любой оператор сравнения, кроме «=», выражает неравенство.

INCLUDE

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

Замечания

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

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

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

Разрешения

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

Примеры

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

USE AdventureWorks2012;
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

См. также

Справочник

sys.dm_db_missing_index_details (Transact-SQL)

sys.dm_db_missing_index_groups (Transact-SQL)

sys.dm_db_missing_index_group_stats (Transact-SQL)