Rencana eksekusi dengan beberapa indeks yang hilang

15

Jika Anda menjalankan kueri dengan 'Sertakan rencana eksekusi Aktual', maka rencana tersebut juga akan menyarankan indeks yang tidak ada. Detail indeks ada di dalam MissingIndexestag di XML. Apakah ada situasi ketika rencana menyertakan beberapa saran indeks? Saya mencoba berbagai kueri sql tetapi tidak dapat menemukan kueri yang menghasilkan dua atau lebih indeks yang hilang.

Giorgi
sumber

Jawaban:

27

Pengoptimal kueri dalam SQL Server dapat membuat beberapa saran indeks yang hilang untuk permintaan individu. Namun bagian dari SQL Server Management Studio (SSMS) yang menampilkan rencana eksekusi secara visual hanya menampilkan satu saran indeks yang hilang; sepertinya bug. Namun beberapa saran indeks ini terlihat di SSMS, misalnya di properti untuk operator pertama (mis. SELECT), Tekan F4.

Melihat beberapa saran indeks yang hilang di SSMS

Seperti yang telah Anda catat, beberapa saran dapat dilihat di XML rencana, atau alat pihak ketiga seperti SQL Sentry Plan Explorer . Beberapa saran juga akan terlihat di DMV indeks yang hilang (mis. Sys.dm_db_missing_index_details )

Kueri sederhana ini menghasilkan beberapa saran untuk saya:

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
sumber