Opérateur Showplan Clustered Index Seek

L'opérateur Clustered Index Seek utilise la capacité de recherche dans les index pour extraire des lignes d'un index cluster. La colonne Argument contient le nom de l'index cluster utilisé et le prédicat SEEK:(). Le moteur de stockage utilise l'index pour ne traiter que les lignes répondant à ce prédicat SEEK:(). Il peut également inclure un prédicat WHERE: () dans lequel le moteur de stockage est évalué par rapport à toutes les lignes répondant au prédicat SEEK:(), mais ceci est facultatif et ne fait pas appel aux index pour exécuter ce processus.

Si la colonne Argument contient la clause ORDERED, le processeur de requêtes a déterminé que les lignes doivent être retournées dans l'ordre dans lequel l'index cluster les a triées. Si la clause ORDERED n'y figure pas, le moteur de stockage effectue la recherche dans l'index de façon optimale, sans nécessairement trier la sortie. Autoriser la sortie à conserver son classement peut s'avérer moins efficace que la production d'une sortie non triée.

Lorsque le mot clé LOOKUP apparaît, une recherche de signet est alors exécutée. Dans SQL Server 2008, l'opérateur Key Lookup fournit la fonctionnalité de recherche de signet.

Clustered Index Seek est un opérateur logique et physique.

Icône de l'opérateur Clustered Index SeekIcône du plan d'exécution graphique

Exemples

L'exemple suivant sélectionne une ligne d'une table ayant un index cluster. La sortie du plan d'exécution indique que l'optimiseur de requête utilise l'opérateur Clustered Index Seek pour récupérer les lignes spécifiées.

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 sortie du plan d'exécution de l'opérateur Clustered Index Seek est affichée ci-dessous.

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