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