Operador de plano de execução Clustered Index Seek

O operador Clustered Index Seek usa a capacidade de busca de índices para recuperar linhas de um índice clusterizado. A coluna Argument contém o nome do índice clusterizado que está sendo usado e o predicado SEEK:(). O mecanismo de armazenamento usa o índice para processar somente as linhas que satisfazem esse predicado SEEK:(). Ele pode incluir também um predicado WHERE:(), onde o mecanismo de armazenamento avaliará em relação a todas as linhas que satisfizerem o predicado SEEK:(), mas isso é opcional e não usa índices para executar esse processo.

Se a coluna Argument contiver a cláusula ORDERED, o processador de consultas determinou que as linhas devem ser retornadas na ordem em que o índice clusterizado as classificou. Se a cláusula ORDERED não estiver presente, o mecanismo de armazenamento pesquisará o índice em modo ótimo, sem necessariamente classificar a saída. Permitir que a saída retenha sua ordenação pode ser menos eficiente do que produzir saída não classificada.

Quando a palavra-chave LOOKUP aparecer, então uma consulta de marcador está sendo executada. No SQL Server 2008, o operador Key Lookup fornece a funcionalidade de consulta de marcador.

Clustered Index Seek é um operador lógico e físico.

Ícone do operador Clustered index seekÍcone do plano de execução gráfica

Exemplos

O exemplo a seguir seleciona uma linha de uma tabela que tem índice clusterizado. A saída do plano de execução mostra que o otimizador de consulta usa o operador Clustered Index Seek para recuperar as linhas 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;

A saída do plano de execução do operador Clustered Index Seek é exibida abaixo.

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