Kế hoạch thực hiện với nhiều chỉ mục bị thiếu


15

Nếu bạn chạy truy vấn với 'Bao gồm kế hoạch thực hiện thực tế', kế hoạch cũng sẽ đề xuất các chỉ mục bị thiếu. Các chi tiết chỉ mục nằm trong MissingIndexesthẻ trong XML. Có một tình huống khi kế hoạch bao gồm nhiều đề xuất chỉ số? Tôi đã thử các truy vấn sql khác nhau nhưng không thể đưa ra bất kỳ truy vấn nào tạo ra hai hoặc nhiều chỉ mục bị thiếu.

Câu trả lời:


27

Trình tối ưu hóa truy vấn trong SQL Server có thể đưa ra nhiều đề xuất chỉ mục bị thiếu cho các truy vấn riêng lẻ. Tuy nhiên, phần của SQL Server Management Studio (SSMS) hiển thị các kế hoạch thực hiện trực quan chỉ hiển thị một đề xuất chỉ mục bị thiếu; nó trông giống như một con bọ Tuy nhiên, nhiều đề xuất chỉ mục này có thể nhìn thấy trong SSMS, ví dụ: trong các thuộc tính cho toán tử đầu tiên (ví dụ SELECT), nhấn F4.

Xem nhiều đề xuất chỉ mục bị thiếu trong SSMS

Như bạn cũng đã lưu ý, nhiều đề xuất có thể nhìn thấy trong XML của kế hoạch hoặc các công cụ của bên thứ ba như SQL Sentry Plan Explorer . Nhiều đề xuất cũng sẽ hiển thị trong các DMV chỉ mục bị thiếu (ví dụ: sys.dm_db_missing_index_details )

Truy vấn đơn giản này dẫn đến nhiều đề xuất cho tôi:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.