Opérateur Showplan Clustered Index Seek

L'opérateur Clustered Index Seek utilise la fonction recherche des 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 le prédicat WHERE:() dans lequel le moteur de stockage évalue 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 d'opérateur de recherche d'index clusterIcône du plan d'exécution graphique

Exemples

L'exemple suivant supprime 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 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;

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:([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