sys.dm_db_missing_index_columns (Transact-SQL)

Devuelve información sobre las columnas de la tabla de la base de datos que no tienen índice, sin incluir los índices espaciales. sys.dm_db_missing_index_columns es una función de administración dinámica.

Sintaxis

sys.dm_db_missing_index_columns(index_handle)

Argumentos

Tabla devuelta

Nombre de columna

Tipo de datos

Descripción

column_id

int

Identificador de la columna.

column_name

sysname

Nombre de la columna de la tabla.

column_usage

varchar(20)

Forma en que la consulta utiliza la columna. Los valores posibles son:

ValorDescripción
EQUALITYLa columna contribuye a crear un predicado que expresa igualdad, con el formato: columna.tabla =valorConstante
INEQUALITYLa columna contribuye a crear un predicado que expresa desigualdad, por ejemplo un predicado con el formato: tabla.columna > valorConstante Cualquier operador de comparación distinto de "=" expresa desigualdad. Para obtener una lista completa de los operadores de comparación, vea Operadores de comparación (motor de base de datos).
INCLUDELa columna no se utiliza para evaluar un predicado, sino por otro motivo; por ejemplo, para cubrir una consulta.

Comentarios

La información que devuelve sys.dm_db_missing_index_columns se actualiza cuando el optimizador de consultas optimiza una consulta, pero no se almacena. La información sobre índices que faltan sólo se conserva hasta que se reinicia SQL Server. Los administradores de bases de datos deben realizar copias de seguridad de forma periódica de la información de índices que faltan si desean conservarla después de reciclar el servidor.

Para obtener información sobre la habilitación y deshabilitación de la recopilación de información de índices que faltan, vea Acerca de la característica de índices que faltan.

La salida de la función de administración dinámica sys.dm_db_missing_index_columns se puede utilizar en cualquier herramienta que pueda leer la información de índices que faltan correspondiente a un index_handle, procesar la información y convertirla en instrucciones CREATE INDEX DDL que implementen el índice que falta. Para obtener más información acerca de la creación de instrucciones de DDL, vea Utilizar información de índices que faltan para escribir instrucciones CREATE INDEX.

Para obtener más información acerca de las limitaciones de esta característica, vea Limitaciones de la característica de índices que faltan.

Coherencia de las transacciones

Si una transacción crea o quita una tabla, las filas que contienen información de índices que faltan sobre los objetos quitados se eliminan de este objeto de administración dinámica para mantener la coherencia de la transacción. Para obtener más información sobre la coherencia de las transacciones con relación a los objetos de administración dinámica de índices que faltan, vea Acerca de la característica de índices que faltan.

Permisos

Los usuarios deben disponer del permiso VIEW SERVER STATE o de cualquier permiso que implique el permiso VIEW SERVER STATE para consultar esta función de administración dinámica.

Ejemplos

En el ejemplo siguiente se ejecuta una consulta en la tabla Address y, después, otra con la vista de administración dinámica sys.dm_db_missing_index_columns para devolver las columnas de la tabla a las que les falta un índice.

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