Plano de execução com vários índices ausentes

15

Se você executar uma consulta com 'Incluir plano de execução real', o plano também sugerirá índices ausentes. Os detalhes do índice estão dentro da MissingIndexestag no XML. Existe uma situação em que o plano inclui várias sugestões de índice? Tentei consultas sql diferentes, mas não consegui encontrar nenhuma consulta que gere dois ou mais índices ausentes.

Giorgi
fonte

Respostas:

27

O Query Optimizer no SQL Server pode fazer várias sugestões de índice ausentes para consultas individuais. No entanto, a parte do SQL Server Management Studio (SSMS) que exibe os planos de execução visualmente exibe apenas uma sugestão de índice ausente; parece um bug. No entanto, essas sugestões de vários índices são visíveis no SSMS, por exemplo, nas propriedades do primeiro operador (por exemplo SELECT), pressione F4.

Exibindo várias sugestões de índice ausentes no SSMS

Como você também observou, várias sugestões são visíveis no XML do plano ou em ferramentas de terceiros como o SQL Sentry Plan Explorer . Várias sugestões também serão visíveis nas DMVs do índice ausentes (por exemplo, sys.dm_db_missing_index_details )

Essa consulta simples resultou em várias sugestões para mim:

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
fonte