Plan wykonania z wieloma brakującymi indeksami

15

Jeśli uruchomisz zapytanie z „Uwzględnij rzeczywisty plan wykonania”, plan zasugeruje również brakujące indeksy. Szczegóły indeksu znajdują się wewnątrz MissingIndexesznacznika w pliku XML. Czy zdarza się sytuacja, gdy plan zawiera wiele propozycji indeksu? Próbowałem różnych zapytań SQL, ale nie mogłem znaleźć żadnego zapytania, które generuje dwa lub więcej brakujących indeksów.

Giorgi
źródło

Odpowiedzi:

27

Optymalizator zapytań w programie SQL Server może tworzyć wiele brakujących sugestii dotyczących indeksów dla poszczególnych zapytań. Jednak część SQL Server Management Studio (SSMS), która wyświetla plany wykonania, wyświetla tylko jedną sugestię brakującego indeksu; wygląda jak błąd. Jednak te sugestie dotyczące wielu indeksów są widoczne w SSMS, np. We właściwościach pierwszego operatora (np. SELECT) Naciśnij F4.

Wyświetlanie wielu brakujących sugestii indeksu w SSMS

Jak już zauważyłeś, wiele sugestii jest widocznych w XML planu lub w narzędziach innych firm, takich jak SQL Sentry Plan Explorer . Wiele sugestii będzie również widocznych w brakujących indeksach DMV (np. Sys.dm_db_missing_index_details )

To proste zapytanie spowodowało dla mnie wiele sugestii:

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
źródło