5.3 hallazgo falta índices

5.3 hallazgo falta índices

Los beneficios del índice, la mayoría de la gente sabe, sino también un índice de daño. Para SQL Server en el índice (o incluso todos los sistemas de gestión de bases de datos, e incluso entonces la mayoría de las cosas del mundo) de que se trate, y no hay buena o mala absoluta absoluta. Adecuado primaria. Demasiados índices conducen a la actualización, inserción, los problemas de rendimiento de eliminación. Índice de demasiado poco puede conducir a la consulta múltiple CPU lenta, IO y más, un escaneo completo de tabla.

Para la mesa central: todos los índices no más de seis.

Para mesa común: no todos los índices de más de cuatro.

Para las tablas pequeñas: todos los índices no más de tres.

5.3.1 necesidad de encontrar la tabla de índices que faltan

Se puede siempre duro para crear el índice correspondiente en la columna correspondiente en el sistema de producción. Después de SQL2008, cuando una ejecución de la consulta, SQL Server optimizador elige el índice más apropiado para la ejecución cuando no encuentra un índice adecuado, a continuación, el optimizador genera un plan de ejecución subóptima, y ​​la información se pierde índices almacenados en los DMV .

Cuando se reinicia el servicio de SQL Server, se almacena información sobre DMV perdidos, así que lo mejor es utilizar la normalidad en unos 90 días para recoger esta información, sería más eficaz. Pero no todos los índices, el índice es probablemente algunos 90 genio utilizado una vez, la indexación debe ser apropiado.

 

sys.dm_db_missing_index_details: Devuelve la información detallada acerca de los índices que faltan.

sys.dm_db_missing_index_group_stats: información resumida a cambio de un determinado índice.

sys.dm_db_missing_index_groups: rentabilidad del índice que perdió el mango contiene información que se pierde en el grupo índice.

sys.dm_db_missing_index_columns (index_Handle): devuelve información acerca de las columnas en el índice de pérdida.

Principal Campo Descripción

 

grupo avg_total_user_cost puede ser reducido por el índice medio de consulta de usuario costo.

Después avg_user_impact lograr este grupo índice de falta, el porcentaje promedio de usuario consulta ganancia posible. Este valor representa la realización si este grupo índice de falta, la consulta cuesta un porcentaje medio declive clic.

user_seeks pueden haber sido utilizados por el grupo recomienda que el número índice para encontrar las consultas de los usuarios causado.

user_scans pueden haber sido utilizados por el grupo recomienda número de análisis de un índice de consultas de los usuarios causado.

index_handle: identificar un índice de falta específica. El identificador es único en el servidor

group_handle: la identificación de desaparecidos grupo índice, un índice de grupo sólo contiene un índice.

5.3.2 hallazgo falta índices

 Encuentra las tablas y columnas de índice que faltan

SELECT MIG. *, Declaración TABLE_NAME 

    column_id, COLUMN_NAME, column_usage 

DE sys.dm_db_missing_index_details como a mediados 

CROSS APPLY sys.dm_db_missing_index_columns (mid.index_handle) 

INNER JOIN sys.dm_db_missing_index_groups COMO EN MIG mig.index_handle = mid.index_handle 

ORDER BY mig.index_group_handle, mig.index_handle, column_id; 

 

Encuentra un índice que faltan hasta

SELECT TOP 10 * 

DE sys.dm_db_missing_index_group_stats 

ORDER BY avg_total_user_cost * avg_user_impact * (user_seeks + user_scans) DESC; 

 

consulta combinada

SELECT * * avg_total_user_cost avg_user_impact (user_scans + user_seeks) AS PossibleImprovement,

        last_user_seek,

        last_user_scan,

        [Comunicado] AS [Objeto],

        'CREATE INDEX [IDX_' + CONVERT (VARCHAR (32), GS.group_handle) + '_'

        + CONVERT (VARCHAR (32), D.index_handle) + '_'

        + REPLACE (REEMPLAZAR (REPLACE ([Declaración], ']', ''), '[', ''), '', '')

        + ']' + 'ON' + [declaración] + '(' + ISNULL (equality_columns, '')

        + CASO CUANDO equality_columns no es nulo

                    Y inequality_columns no es NULL ENTONCES ''

               ELSE ''

          FIN + ISNULL (inequality_columns, '') + ')' + ISNULL ( 'incluyen ('

                                                              + included_columns

                                                              + ')', '') AS Create_Index_Syntax

DE sys.dm_db_missing_index_groups como G

        INNER JOIN sys.dm_db_missing_index_group_stats COMO EN GS G.index_group_handle = GS.group_handle

        INNER JOIN sys.dm_db_missing_index_details como D = EN G.index_handle D.index_handle

ORDER BY DESC PossibleImprovement

Publicado 37 artículos originales · ganado elogios 0 · Vistas 2420

Supongo que te gusta

Origin blog.csdn.net/syjhct/article/details/86559832
Recomendado
Clasificación