Clustered Index Seek (operador de Showplan)

El operador Clustered Index Seek utiliza la capacidad de búsqueda de los índices para recuperar filas de un índice en clúster. La columna Argument contiene el nombre del índice en clúster que se va a utilizar y el predicado SEEK:(). El motor de almacenamiento utiliza el índice para procesar solamente las filas que cumplen el predicado SEEK:(). También puede incluir un predicado WHERE:() en el que el motor de almacenamiento determine todas las filas que cumplan el predicado SEEK:(), aunque este predicado es opcional y no utiliza índices para completar el proceso.

Si la columna Argument contiene la cláusula ORDERED, significa que el procesador de consultas ha determinado que se deben devolver las filas en el orden en el que el índice en clúster las haya clasificado. Si no hay una cláusula ORDERED, el motor de almacenamiento busca el índice de la forma óptima (sin tener que ordenar el resultado). Permitir que el resultado conserve su ordenación puede ser menos eficiente que generar un resultado no ordenado.

Si aparece la palabra clave LOOKUP, significa que se está realizando una búsqueda de marcadores. En SQL Server 2008, el operador Key Lookup proporciona la función de búsqueda de marcadores.

Clustered Index Seek es un operador lógico y físico.

Icono del operador Búsqueda en índice clústerIcono del plan de ejecución gráfico

Ejemplos

En el ejemplo siguiente se selecciona una fila de una tabla que tiene un índice en clúster. La salida del plan de ejecución muestra que el optimizador de consultas utiliza el operador Clustered Index Seek para recuperar las filas especificadas.

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;

La salida del plan de ejecución del operador Clustered Index Seek se muestra a continuación.

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