Optimisation de requête

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

L'optimisation de requête est une opération dans laquelle plusieurs plans d'exécution (en)[1] d'une requête SQL sont examinés pour en sélectionner le meilleur.

L'estimation de leurs coûts dépend du temps d'exécution et du nombre de ressources utilisées pour y parvenir, elle se mesure en entrées-sorties. Typiquement les ressources coûteuses sont l'utilisation du processeur, la taille et la durée des tampons sur le disque dur, et les connexions entre les unités du parallélisme. Plusieurs SGBD comme Oracle et MySQL possèdent des fonctions permettant d'effectuer ces calculs, via un optimiseur.

Il existe deux types d'optimisation :

Principes[modifier | modifier le code]

D'une manière générale, il convient d'effectuer par priorité décroissante :

  • Les sélections, afin de réduire le plus grand nombre de données en mémoire. Dans la mesure du possible il faut éviter les wildcards (*).
  • Les projections, toujours pour diminuer la taille des données.
  • Les tris, pour accélérer les jointures.
  • Les jointures. Les différents plans d'exécution examinés sont constitués des différents chemins d'accès (ex : accès aux index primaires et secondaires) et de la variété des techniques de jointure :
    1. tri fusion (merge join)
    2. hashage (hash join)
    3. boucle imbriquée (nested loop join)
    4. produit (product join).

Notes et références[modifier | modifier le code]

Voir aussi[modifier | modifier le code]

Liens externes[modifier | modifier le code]