Plan de ejecución con múltiples índices faltantes

15

Si ejecuta una consulta con 'Incluir plan de ejecución real', el plan también sugerirá índices que faltan. Los detalles del índice están dentro de la MissingIndexesetiqueta en el XML. ¿Existe una situación en la que el plan incluye múltiples sugerencias de índice? Intenté diferentes consultas sql pero no pude encontrar ninguna consulta que genere dos o más índices faltantes.

Giorgi
fuente

Respuestas:

27

El Optimizador de consultas en SQL Server puede hacer múltiples sugerencias de índice faltantes para consultas individuales. Sin embargo, la parte de SQL Server Management Studio (SSMS) que muestra los planes de ejecución visualmente solo muestra una sugerencia de índice faltante; Parece un error. Sin embargo, estas sugerencias de índice múltiple son visibles en SSMS, por ejemplo, en las propiedades para el primer operador (por ejemplo SELECT), presione F4.

Ver múltiples sugerencias de índice que faltan en SSMS

Como también ha notado, hay múltiples sugerencias visibles en el plan XML o en herramientas de terceros como SQL Sentry Plan Explorer . También se verán varias sugerencias en los DMV de índice que faltan (por ejemplo, sys.dm_db_missing_index_details )

Esta simple consulta resultó en múltiples sugerencias para mí:

USE tempdb
GO

SET NOCOUNT ON
GO

IF OBJECT_ID('dbo.t1') IS NOT NULL DROP TABLE dbo.t1
CREATE TABLE dbo.t1
(
    rowId INT IDENTITY
)
GO

IF OBJECT_ID('dbo.t2') IS NOT NULL DROP TABLE dbo.t2
CREATE TABLE dbo.t2
(
    rowId INT IDENTITY
)
GO


INSERT INTO dbo.t1 DEFAULT VALUES
GO 100000

INSERT INTO dbo.t2 DEFAULT VALUES
GO 100000



SELECT *
FROM dbo.t1 t1
    INNER JOIN dbo.t2 t2 ON t1.rowId = t2.rowId
WHERE t2.rowId = 999;

HTH

wBob
fuente