Partager via


Associer des indices de requête à un guide de plan

Toute combinaison d’indicateurs de requête valides peut être utilisée dans un guide de plan. Lorsqu’un repère de plan correspond à une requête, la clause OPTION spécifiée dans la clause hints d’un repère de plan est ajoutée à la requête avant de compiler et d’optimiser. Si une requête correspondant à un repère de plan a déjà une clause OPTION, les indicateurs de requête spécifiés dans le repère de plan remplacent ceux de la requête. Toutefois, pour qu’un repère de plan corresponde à une requête qui possède déjà une clause OPTION, vous devez inclure la clause OPTION de la requête lorsque vous spécifiez le texte de la requête à mettre en correspondance dans l’instruction sp_create_plan_guide. Si vous souhaitez que les indicateurs spécifiés dans le repère de plan soient ajoutés aux indicateurs qui existent déjà sur la requête, au lieu de les remplacer, vous devez spécifier les indicateurs d’origine et les indicateurs supplémentaires dans la clause OPTION du repère de plan.

Avertissement

Les guides de plan qui utilisent des indicateurs de requête de manière inappropriée risquent de causer des problèmes de compilation, d’exécution ou de performances. Les repères de plan doivent être utilisés uniquement par les développeurs expérimentés et les administrateurs de base de données.

Indicateurs de requête courants utilisés dans les repères de plan

Les requêtes qui peuvent tirer parti des repères de plan sont généralement basées sur des paramètres et peuvent s’avérer médiocres, car elles utilisent des plans de requête mis en cache dont les valeurs de paramètre ne représentent pas un scénario pire ou le plus représentatif. Les indicateurs de requête OPTIMIZE FOR et RECOMPILE peuvent être utilisés pour résoudre ce problème. OPTIMIZE FOR indique à SQL Server d’utiliser une valeur particulière pour un paramètre lorsque la requête est optimisée. RECOMPILE indique au serveur d’ignorer un plan de requête après l’exécution, forçant l’optimiseur de requête à recompiler un nouveau plan de requête la prochaine fois que la même requête est exécutée. Pour obtenir un exemple, consultez Repères de plan.

En outre, vous pouvez spécifier les indicateurs de table INDEX, FORCESCAN et FORCESEEK comme indicateurs de requête. Lorsqu’ils sont spécifiés en tant qu’indicateurs de requête, ces indicateurs se comportent comme une table inline ou un indicateur de vue. L’indicateur INDEX force l’optimiseur de requête à utiliser uniquement les index spécifiés pour accéder aux données de la table ou de la vue référencée. L’indicateur FORCESEEK force l’optimiseur à utiliser uniquement une opération de recherche d’index pour accéder aux données dans la table ou la vue référencée. Ces indicateurs fournissent des fonctionnalités supplémentaires de repère de plan et vous permettent d’avoir plus d’influence sur l’optimisation des requêtes qui utilisent le guide de plan.