Procédure : créer un repère de plan (SQL Server Management Studio)

Cette rubrique explique comment créer un repère de plan à l'aide de SQL Server Management Studio. Les repères de plan influencent l'optimisation des requêtes en attachant des indicateurs de requête ou un plan fixe de requête à celles-ci. Dans le repère de plan, vous spécifiez l'instruction Transact-SQL que vous voulez optimiser et une clause OPTION contenant les indicateurs de requête ou un plan de requête spécifique à utiliser pour optimiser la requête. Lorsque la requête s'exécute, l'optimiseur de requête fait correspondre l'instruction Transact-SQL au repère de plan et attache la clause OPTION à la requête au moment de l'exécution ou fait appel au plan de requête spécifié.

L'exemple suivant crée un repère de plan pour une instruction Transact-SQL et applique l'indicateur de requête FORCESEEK à l'instruction. Cet indicateur de requête force l'optimiseur à utiliser une opération de recherche d'index pour accéder aux données dans la table spécifiée.

Pour créer un exemple de repère de plan

  1. Dans l'Explorateur d'objets, connectez-vous à une instance du Moteur de base de données et développez-la.

  2. Développez Bases de données, la base de données AdventureWorks2008R2, puis Programmabilité.

  3. Cliquez avec le bouton droit sur Repères de plan, puis cliquez sur Nouveau repère de plan.

  4. Dans Nom, entrez ForceseekPlan comme nom du repère de plan.

  5. Dans Instruction, entrez l'instruction Transact-SQL suivante. Il s'agit de l'instruction par rapport à laquelle le repère de plan est appliqué.

    SELECT p.LastName, p.FirstName, HumanResources.Employee.JobTitle
    FROM HumanResources.Employee
    JOIN Person.Person AS p ON HumanResources.Employee.BusinessEntityID = p.BusinessEntityID
    WHERE HumanResources.Employee.OrganizationLevel = 3 ORDER BY p.LastName, p.FirstName
    
  6. Dans Type de portée, sélectionnez SQL comme le type d'entité où apparaît l'instruction Transact-SQL.

  7. Dans Indicateurs, entrez la clause OPTION suivante.

    OPTION (TABLE HINT(HumanResources.Employee, FORCESEEK))
    
  8. Pour créer le repère de plan, cliquez sur OK.

Pour vérifier que le repère de plan correspond à une requête

  1. Démarrez une trace SQL Server Profiler, en veillant à ce que les types d'événement Plan Guide Successful et Plan Guide Unsuccessful sont sélectionnés (localisés sous le nœud Performance).

  2. Exécutez la requête fournie dans l'étape 5 de la procédure précédente.

  3. Suspendez la trace du SQL Server Profiler.

  4. Recherchez l'événement Plan Guide Successful de la requête affectée.

  5. Si le repère de plan n'a pas pu être mis en correspondance avec la requête, vérifiez que celle-ci est dans le même format, au caractère près, que lorsqu'elle a été spécifiée dans l'instruction de repère de plan. Cela comprend les onglets, les espaces, les retours chariot ou les sauts de ligne.