 ##  [Optimisation de Requête](/fr/node/58811) 

 Définition

Le processus au sein d'un système de gestion de base de données consistant à sélectionner un plan d'exécution pour une requête déclarative en transformant des expressions algébriques équivalentes, en estimant des coûts et en choisissant opérateurs, ordres de jointure et chemins d'accès minimisant l'usage de ressources ou la latence attendue.

 

 

 

 

 

 





## Principe

Principe

Explorer l'espace des plans de requête sémantiquement équivalents à l'aide de modèles de coût et de statistiques, en appliquant des transformations algébriques (commutativité, associativité, poussée de prédicat, projection) et des heuristiques pour trouver des plans à faible coût sous contraintes.

 

 

 

 

 





## Démonstration

Démonstration

L'optimiseur réécrit une requête SQL pour pousser les filtres avant les jointures, choisit un parcours d'index plutôt qu'un balayage complet selon les estimations de cardinalité, et ordonne les jointures pour matérialiser des résultats intermédiaires plus petits, réduisant E/S et temps d'exécution.

 

 

 

 

## Mauvaise application

Mauvaise application

S'appuyer sur des statistiques obsolètes ou absentes produit de mauvaises estimations de cardinalité et de mauvais plans ; une recherche exhaustive sans élagage devient infaisable ; la matérialisation prématurée ou l'abus d'heuristiques peut faire manquer de meilleurs plans.

 

 

 

 

 





## Conséquence

Conséquence

Une optimisation efficace réduit substantiellement la latence et la consommation de ressources, permettant à des charges analytiques et OLTP d'exécuter à grande échelle avec des performances prévisibles.

 

 

 

 

## Inversion

Inversion

Sans optimisation, le SGBD peut exécuter un plan naïf (parcours complet, jointures en boucles imbriquées sur de grands volumes) qui consomme trop d'E/S et de CPU et entraîne des latences bien supérieures.

 

 

 

 

 





## Limite

Limite

S'applique aux requêtes déclaratives dans les SGBD et moteurs de requête ; n'inclut pas la réécriture manuelle de requêtes hors de l'optimiseur ni l'ordonnancement d'exécution qui n'est pas lié à la sélection de plan d'une seule requête.

 

 

 

 

 





## Tension sémantique

Tension sémantique

Il existe une tension entre optimisation par règles et par coût, et entre recherche exhaustive et élagage heuristique ; il y a aussi un compromis entre temps d'optimisation et performance d'exécution.

 

 

 

 

 





## Synthèse

Synthèse

L'optimisation de requête est le processus de recherche et transformation guidé par les coûts qui mappe une requête déclarative vers un plan d'exécution efficace en combinant réécritures algébriques, modèles de coût basés sur les statistiques et heuristiques pragmatiques.