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.
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