Condividi tramite


Operatore Showplan Clustered Index Seek

L'operatore Clustered Index Seek utilizza le funzionalità di ricerca degli indici per recuperare righe da un indice cluster. La colonna dell'argomentoinclude il nome dell'indice cluster utilizzato e il predicato SEEK:(). Il motore di archiviazione utilizza l'indice per elaborare soltanto le righe conformi al predicato SEEK:(). Può inoltre includere un predicato WHERE:() in cui il motore di archiviazione valuta tutte le righe che sono conformi al predicato SEEK:(). Si tratta però di un predicato facoltativo, che non utilizza gli indici per completare l'elaborazione.

Se la colonna dell'argomentoinclude la clausola ORDERED, Query Processor ha determinato che le righe devono essere restituite nello stesso ordine utilizzato dall'indice cluster. Se la clausola ORDERED non è presente, il motore di archiviazione esegue la ricerca nell'indice in modo ottimale, senza necessariamente ordinare l'output. Il mantenimento dell'ordinamento dell'output può dare come risultato un livello di efficienza minore rispetto alla restituzione di output non ordinato.

Quando viene visualizzata la parola chiave LOOKUP, è in esecuzione una ricerca tramite segnalibro. In SQL Server 2008 la funzionalità di ricerca tramite segnalibro è offerta dall'operatore Key Lookup.

Clustered Index Seek è un operatore logico e fisico.

Icona dell'operatore Clustered Index SeekIcona del piano di esecuzione grafico

Esempi

Nell'esempio seguente viene eliminata una riga da una tabella con un indice cluster. L'output del piano di esecuzione mostra che Query Optimizer utilizza l'operatore Clustered Index Seek per recuperare le righe specificate.

USE AdventureWorks;
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;

L'output del piano di esecuzione dell'operatore Clustered Index Seek è riportato di seguito.

PhysicalOp 
-----------------------------------------------------------------------
Clustered Index Seek

Argument
-----------------------------------------------------------------------
OBJECT:([AdventureWorks].[Production].[UnitMeasure].[PK_UnitMeasure_UnitMeasureCode]), 
SEEK:([AdventureWorks].[Production].[UnitMeasure].[UnitMeasureCode] >= 
    CONVERT_IMPLICIT(nvarchar(4000),[@1],0) AND 
    [AdventureWorks].[Production].[UnitMeasure].[UnitMeasureCode] 
<= CONVERT_IMPLICIT(nvarchar(4000),[@2],0)) ORDERED FORWARD