Acerca de la característica de índices que faltan

La característica de índices que faltan utiliza los objetos de administración dinámica y los planes de presentación para proporcionar información acerca de los índices que faltan que podrían mejorar el rendimiento de las consultas de SQL Server.

Componentes

Cuando el optimizador de consultas genera un plan de consultas, analiza cuáles son los mejores índices para una condición de filtro concreta. Si no existen los mejores índices, el optimizador de consultas genera un plan de consulta de menor calidad y almacena información acerca de estos índices mejores que faltan. La característica de índices que faltan le permite tener acceso a la información acerca de estos índices para poder decidir si deberían implementarse.

La característica de índices que faltan consta de los siguientes componentes:

  • Un conjunto de objetos de administración dinámica que se pueden consultar para devolver información acerca de los índices que faltan.

  • El elemento MissingIndexes en planes de presentación XML, que correlaciona los índices que el optimizador de consultas considera que faltan con las consultas para las que faltan.

Los componentes de la característica de índices que faltan se tratan detenidamente en las secciones siguientes.

Objetos de administración dinámica

Después de ejecutar una carga de trabajo normal en SQL Server, puede recuperar la información acerca de los índices que faltan consultando los objetos de administración dinámica que aparecen en la tabla siguiente. Estos objetos de administración dinámica se almacenan en la base de datos maestra.

Objeto de administración dinámica

Información devuelta

sys.dm_db_missing_index_group_stats (Transact-SQL)

Devuelve información resumida acerca de los grupos de índices que faltan, por ejemplo, las mejoras en el rendimiento que podrían obtenerse implementando un grupo específico de índices que faltan.

sys.dm_db_missing_index_groups (Transact-SQL)

Devuelve información acerca de un grupo específico de índices que faltan, como el identificador de grupo y los identificadores de todos los índices que faltan incluidos en dicho grupo.

sys.dm_db_missing_index_details (Transact-SQL)

Devuelve información detallada acerca de un índice que falta; por ejemplo, devuelve el nombre y el identificador de la tabla en la que falta el índice, y las columnas y los tipos de columnas que debería crear el índice que falta.

sys.dm_db_missing_index_columns (Transact-SQL)

Devuelve información acerca de las columnas de la tabla de la base de datos que no tienen un índice.

Puede utilizar la información devuelta por estos objetos de administración dinámica con herramientas o scripts que utilizan la información para generar instrucciones CREATE INDEX DDL que implementarán los índices que faltan.

Coherencia de la transacción

Las modificaciones individuales a las filas de estos objetos de administración dinámica no son coherentes en cuanto a las transacciones. Es decir, si se anula una consulta o se revierte la transacción que la incluye, todavía existirán las filas que contienen información acerca de los índices que faltan para dicha consulta.

Sólo se admiten las transacciones completas. No se admiten los puntos de comprobación ni las reversiones parciales.

Nota

Cuando cambian los metadatos para una tabla, se elimina toda la información acerca de los índices que faltan en la tabla de estos objetos de administración dinámica. Los cambios de metadatos en una tabla se pueden producir, por ejemplo, cuando se agregan o quitan columnas de una tabla, o bien cuando se crea un índice en una columna de una tabla.

Elemento MissingIndexes del plan de presentación XML

Para correlacionar consultar con los índices que faltan identificados en los resultados de objetos de administración dinámica, puede ver el elemento MissingIndexes en los planes de presentación XML. El elemento MissingIndexes se muestra en el ejemplo siguiente:

<ShowPlanXML…>

 <BatchSequence>

  <Batch>

   <Statements>

    <StmtSimple…>

     <StatementSetOptions… />

      <QueryPlan…>

        <MissingIndexes>

        <MissingIndexGroup Impact="22.8764">

         <MissingIndex Database="[ADVENTUREWORKS2008R2]" Schema="[Person]" Table="[Address]">

          <ColumnGroup Usage="EQUALITY">

           <Column Name="[PostalCode]" ColumnId="4" />

          </ColumnGroup>

          <ColumnGroup Usage="INEQUALITY">

           <Column Name="[ModifiedDate]" ColumnId="5" />

          </ColumnGroup>

          <ColumnGroup Usage="INCLUDE">

           <Column Name="[AddressLine1]" ColumnId="2" />

           <Column Name="[AddressLine2]" ColumnId="3" />

           <Column Name="[StateProvinceID]" ColumnId="1" />

          </ColumnGroup>

         </MissingIndex>

        </MissingIndexGroup>

       </MissingIndexes>

La información incluida en el elemento MissingIndexes puede ayudarle a determinar qué índices mejorarían el rendimiento de la consulta específica descrita en el elemento StmtSimple, que incluye la propia instrucción de Transact-SQL. A continuación, utilizando la información devuelta para este elemento, puede escribir una instrucción CREATE INDEX DDL.

Habilitar y deshabilitar la característica de índices que faltan

La característica de índices que faltan está activada de forma predeterminada. No se proporciona ningún control para activar o desactivar la característica, ni para restablecer cualquiera de las tablas devueltas cuando se consultan los objetos de administración dinámica. Cuando se reinicia SQL Server, se quita toda la información sobre índices que faltan.

Esta característica sólo se puede deshabilitar si se inicia una instancia de SQL Server empleando el argumento -x con la utilidad del símbolo del sistema sqlservr. Para obtener más información, vea sqlservr (aplicación).