Оптимізатор запитів на SQL Server може вносити кілька пропозицій про відсутні індекси для окремих запитів. Однак частина студії управління SQL Server (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;
HTH