L'Optimiseur de requête dans SQL Server peut faire plusieurs suggestions d'index manquantes pour des requêtes individuelles. Cependant, la partie de SQL Server Management Studio (SSMS) qui affiche visuellement les plans d'exécution n'affiche qu'une seule suggestion d'index manquant; cela ressemble à un bug. Cependant, ces multiples suggestions d'index sont visibles dans SSMS, par exemple dans les propriétés du premier opérateur (par exemple SELECT
), appuyez sur F4.
Comme vous l'avez également noté, plusieurs suggestions sont visibles dans le plan XML ou dans des outils tiers tels que SQL Sentry Plan Explorer . Plusieurs suggestions seront également visibles dans les DMV d'index manquants (par exemple sys.dm_db_missing_index_details )
Cette simple requête a abouti à plusieurs suggestions pour moi:
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