Key Lookup Showplan 運算子
新增: 2006 年 12 月 12 日
Key Lookup 運算子是 SQL Server 2005 Service Pack 2 新增的功能,可在包含叢集索引的資料行上進行書籤查閱。Argument 資料行包含叢集索引的名稱和叢集索引鍵,可用來查閱叢集索引中的資料列。Key Lookup 一律都會伴隨 Nested Loops 運算子。如果 Argument 資料行中出現 WITH PREFETCH 子句,表示查詢處理器已決定在叢集索引中查詢書籤時,使用非同步預先提取 (預先讀取) 是最佳的。如需有關預先讀取的詳細資訊,請參閱<讀取分頁>。
在舊版 SQL Server 2005 中,書籤查閱功能是使用 Clustered Index Seek 運算子加上關鍵字 LOOKUP 顯示的。在 SP2 中,Key Lookup 運算子圖示會顯示在圖形執行計劃中,不過,當以 XML 或文字格式顯示執行計劃時,輸出會顯示 Clustered Index Seek 運算子加上關鍵字 LOOKUP。
在查詢計劃中使用 Key Lookup 運算子,表示查詢可以進行效能微調。例如,您可以新增涵蓋索引來提高查詢效能。
圖形化執行計劃圖示
範例
下列範例會執行簡單的查詢、將非叢集索引修改為涵蓋查詢,然後再重新執行查詢,觀察查詢執行計劃的差異。藉由顯示這個查詢的圖形執行計劃,您可以看到第一次執行查詢的計劃顯示使用 Key Lookup 運算子,從 HumanResources.Department
資料表上的叢集索引擷取 GroupName
資料。
計劃也會顯示使用非叢集索引 AK
_Department
_Name
來滿足查詢的 WHERE 子句述詞。藉由修改這個索引來包含 GroupName
資料行,索引便可涵蓋查詢,而查詢計劃只會包含索引搜尋作業。執行查詢的時間便會大幅縮短。
USE AdventureWorks;
GO
SELECT GroupName
FROM HumanResources.Department
WHERE Name = 'Engineering';
GO
-- Create a covering index by adding GroupName to the nonclustered index.
CREATE UNIQUE NONCLUSTERED INDEX AK_Department_Name
ON HumanResources.Department ( Name ASC, GroupName)
WITH (DROP_EXISTING = ON);
GO
SELECT GroupName
FROM HumanResources.Department
WHERE Name = 'Engineering';
GO
請參閱
工作
參考
叢集索引搜尋 Showplan 運算子
巢狀迴圈 Showplan 運算子
概念
邏輯與實體運算子參考
使用 Showplan SET 選項來顯示執行計劃 (Transact-SQL)
具有內含資料行的索引