Оптимизатор запросов в SQL Server может сделать несколько предложений по отсутствующим индексам для отдельных запросов. Однако та часть SQL Server Management Studio (SSMS), которая отображает планы выполнения визуально, отображает только одно предложение по отсутствующему индексу; это похоже на ошибку. Однако эти предложения с несколькими индексами видны в SSMS, например, в свойствах для первого оператора (например SELECT
), нажмите F4.
Как вы также заметили, несколько предложений видны в плане XML или сторонних инструментах, таких как SQL Sentry Plan Explorer . Несколько предложений также будут видны в отсутствующих индексных DMV (например, sys.dm_db_missing_index_details )
Этот простой запрос привел к нескольким предложениям для меня:
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;
НТН