Vue d’ensemble du plan d’exécution

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Pour pouvoir exécuter des requêtes, le moteur de base de données SQL Server doit analyser l’instruction pour déterminer un moyen 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.

Astuce

Pour plus d’informations sur le traitement des requêtes et les plans d’exécution des requêtes, consultez les sections Optimisation des instructions SELECT et de la mise en cache du plan d’exécution et réutilisation du guide d’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 est la définition de :

  • 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 d’une table sont requises, mais qu’il existe un index dont les colonnes clés se trouvent dans un ORDER BY, l’exécution d’une analyse d’index au lieu d’une analyse de table peut enregistrer un tri distinct du jeu de résultats. Si une table est petite, les analyses de table peuvent être la méthode la plus efficace pour presque 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.

Voir aussi

Étapes suivantes