Clustered Index Seek Showplan 运算符

Clustered Index Seek 运算符利用索引的查找功能从聚集索引中检索行。Argument 列包含所使用的聚集索引名称和 SEEK:() 谓词。存储引擎仅使用索引来处理满足此 SEEK:() 谓词的行。它还包括 WHERE:() 谓词,其中存储引擎对满足 SEEK:() 谓词的所有行进行计算,但此操作是可选的,并且不使用索引来完成此过程。

如果 Argument 列包含 ORDERED 子句,则表示查询处理器已决定必须按聚集索引排序行的顺序返回行。如果没有 ORDERED 子句,存储引擎将以最佳方式搜索索引,而不对输出进行必要的排序。若允许输出保持顺序,则效率可能比生成非排序输出的效率低。

出现关键字 LOOKUP 时,将执行书签查找。在 SQL Server 2008 中,Key Lookup 运算符提供书签查找功能。

Clustered Index Seek 既是一个逻辑运算符,也是一个物理运算符。

Clustered Index Seek 运算符图标图形执行计划图标

示例

下面的示例从具有聚集索引的表中选择一行。执行计划的输出显示查询优化器使用 Clustered Index Seek 运算符来检索指定的行。

USE AdventureWorks2008R2;
GO
SET NOCOUNT ON;
GO
SET SHOWPLAN_ALL ON;
GO
SELECT Name
FROM Production.UnitMeasure
WHERE UnitMeasureCode BETWEEN 'Each' AND 'Inch';
GO
SET SHOWPLAN_ALL OFF;

Clustered Index Seek 运算符的执行计划输出如下所示。

PhysicalOp

-----------------------------------------------------------------------

Clustered Index Seek

Argument

-----------------------------------------------------------------------

OBJECT:([AdventureWorks2008R2].[Production].[UnitMeasure].[PK_UnitMeasure_UnitMeasureCode]),

SEEK:([AdventureWorks2008R2].[Production].[UnitMeasure].[UnitMeasureCode] >=

CONVERT_IMPLICIT(nvarchar(4000),[@1],0) AND

[AdventureWorks2008R2].[Production].[UnitMeasure].[UnitMeasureCode]

<= CONVERT_IMPLICIT(nvarchar(4000),[@2],0)) ORDERED FORWARD