Partage via


Vue d’ensemble du plan d’exécution

S’applique à : SQL Server base de données Azure SQL Azure SQL Managed Instance

Pour pouvoir exécuter des requêtes, le moteur de base de données SQL Server doit analyser l’instruction afin de déterminer une manière efficace d’accéder aux données requises et de les traiter. Cette analyse est gérée par un composant appelé Optimiseur de requête. L’entrée de l’optimiseur de requête est composée de la requête, du schéma de base de données (définitions des tables et des index) et de ses statistiques de base de données. L’optimiseur de requête génère un ou plusieurs plans d’exécution de requête, parfois appelés plans de requête ou plans d’exécution. L’optimiseur de requête choisit un plan de requête à l’aide d’un ensemble d’heuristiques pour équilibrer le temps de compilation et l’optimisation du plan afin de trouver un bon plan de requête.

Conseil

Pour plus d’informations sur les plans de traitement et d’exécution des requêtes, consultez les sections Optimisation des instructions SELECT et Mise en cache et réutilisation des plans d’exécution du Guide de l’architecture de traitement des requêtes.

Pour plus d’informations sur l’affichage des plans d’exécution dans SQL Server Management Studio et Azure Data Studio, consultez Afficher et enregistrer des plans d’exécution.

Un plan d'exécution de requête permet de définir :

  • L’ordre d’accès aux tables sources.

    Pour créer le jeu de résultats, le serveur de bases de données peut accéder aux tables de base selon de nombreux ordres différents. Par exemple, si une instruction SELECT référence trois tables, le serveur de base de données accédera d’abord à TableA, utilisera les données de TableA pour extraire les lignes correspondantes de TableB, puis utilisera les données de TableB pour extraire les données de TableC. Les autres séquences dans lesquelles le serveur de bases de données peut accéder aux tables sont les suivantes :
    TableC, TableB, TableAou
    TableB, TableA, TableCou
    TableB, TableC, TableAou
    TableC, TableA, TableB

  • Les méthodes utilisées pour extraire les données des différentes tables.

    Il existe également différentes méthodes d'accès aux données dans chaque table. Si seules quelques lignes ayant des valeurs de clés spécifiques sont nécessaires, le serveur de base de données peut utiliser un index. Si toutes les lignes de la table sont nécessaires, le serveur de base de données peut ignorer les index et procéder à une analyse de la table. Si toutes les lignes de la table sont nécessaires mais qu’il existe un index dont les colonnes clés se trouvent dans une clause ORDER BY, l’analyse d’index plutôt que l’analyse de table peut éviter un jeu de résultats séparé. Dans le cas d'une table petite, les analyses de table peuvent s'avérer plus efficaces pour quasiment tous les accès à la table.

  • Les méthodes utilisées pour effectuer les calculs, et filtrer, agréger et trier les données des différentes tables.

    À mesure que les données sont consultées à partir des tables, différentes méthodes permettent d’effectuer des calculs sur les données, par exemple calculer des valeurs scalaires, et agréger et trier les données comme défini dans le texte de la requête, par exemple en utilisant une clause GROUP BY ou ORDER BY, et filtrer les données, par exemple en utilisant une clause WHERE ou HAVING.