สมมติว่าเรามีคำจำกัดความของตารางดังนี้:
CREATE TABLE MyTab (
ID INT IDENTITY(1,1) CONSTRAINT PK_MyTab_ID PRIMARY KEY
,GroupByColumn NVARCHAR(10) NOT NULL
,WhereColumn DATETIME NULL
)
และดัชนีที่ไม่ได้ทำคลัสเตอร์ที่กรองแล้วเช่นนี้:
CREATE NONCLUSTERED INDEX IX_MyTab_GroupByColumn ON MyTab
(GroupByColumn)
WHERE (WhereColumn IS NULL)
เหตุใดดัชนีนี้จึงไม่ "ครอบคลุม" สำหรับคำค้นหานี้:
SELECT
GroupByColumn
,COUNT(*)
FROM MyTab
WHERE WhereColumn IS NULL
GROUP BY GroupByColumn
ฉันได้รับแผนปฏิบัติการนี้แล้ว:
KeyLookup ใช้สำหรับกริยาที่ WhereColumn IS
นี่คือแผน: https://www.brentozar.com/pastetheplan/?id=SJcbLHxO7