Partager via


Exécution directe

L’exécution directe est le moyen le plus simple d’exécuter une instruction. Une application génère une chaîne de caractères contenant une instruction Transact-SQL et la soumet à l’exécution à l’aide de la fonction SQLExecDirect . Lorsque l’instruction atteint le serveur, SQL Server la compile dans un plan d’exécution, puis exécute immédiatement le plan d’exécution.

L’exécution directe est couramment utilisée par les applications qui créent et exécutent des instructions au moment de l’exécution et sont la méthode la plus efficace pour les instructions qui seront exécutées une seule fois. Son inconvénient avec de nombreuses bases de données est que l’instruction SQL doit être analysée et compilée chaque fois qu’elle est exécutée, ce qui ajoute une surcharge si l’instruction est exécutée plusieurs fois.

SQL Server améliore considérablement les performances de l’exécution directe d’instructions couramment exécutées dans des environnements multiutilisateurs et l’utilisation de SQLExecDirect avec des marqueurs de paramètres pour les instructions SQL couramment exécutées peuvent aborder l’efficacité de l’exécution préparée.

Lorsqu’il est connecté à une instance de SQL Server, le pilote ODBC SQL Server Native Client utilise sp_executesql pour transmettre l’instruction SQL ou le lot spécifié sur SQLExecDirect. SQL Server a une logique pour déterminer rapidement si une instruction SQL ou un lot exécuté avec sp_executesql correspond à l’instruction ou au lot qui a généré un plan d’exécution qui existe déjà en mémoire. Si une correspondance est effectuée, SQL Server réutilise simplement le plan existant plutôt que de compiler un nouveau plan. Cela signifie que les instructions SQL couramment exécutées avec SQLExecDirect dans un système avec de nombreux utilisateurs bénéficieront de nombreux avantages de réutilisation du plan qui n’étaient disponibles que pour les procédures stockées dans les versions antérieures de SQL Server.

Cet avantage de réutiliser les plans d’exécution fonctionne uniquement lorsque plusieurs utilisateurs exécutent la même instruction SQL ou le même lot. Suivez ces conventions de codage pour augmenter la probabilité que les instructions SQL exécutées par différents clients soient suffisamment similaires pour pouvoir réutiliser les plans d’exécution :

  • N’incluez pas de constantes de données dans les instructions SQL ; utilisez plutôt des marqueurs de paramètres liés aux variables de programme. Pour plus d’informations, consultez Utilisation des paramètres d’instruction.

  • Utilisez des noms d’objets complets. Les plans d’exécution ne sont pas réutilisés si les noms d’objets ne sont pas qualifiés.

  • Avoir des connexions d’application autant que possible utiliser un ensemble commun d’options de connexion et d’instruction. Les plans d’exécution générés pour une connexion avec un ensemble d’options (par exemple, ANSI_NULLS) ne sont pas réutilisés pour une connexion ayant un autre ensemble d’options. Le pilote ODBC SQL Server Native Client et le fournisseur OLE DB SQL Server Native Client ont tous les deux les mêmes paramètres par défaut pour ces options.

Si toutes les instructions exécutées avec SQLExecDirect sont codées à l’aide de ces conventions, SQL Server peut réutiliser les plans d’exécution lorsque l’opportunité se présente.

Voir aussi

Exécution d’instructions (ODBC)