Techniques pour l'optimisation de requêtes
Restructuration algébrique
Il existe des propriétés permettant de modifier l'ordre des opérateurs algébriques, afin d'obtenir des gains de performance par exemple :
Le groupage des restrictions : Il permet d'effectuer plusieurs restrictions en un seul parcours de la table, au lieu d'un par restriction
Restriction (Restriction (t,x=a), x=b) <=> Restriction (t,x=a ET x=b)
La commutativité des restrictions et Jointures : Elle permet d'appliquer les restrictions avant les jointures
L'associativité des jointures : Elle permet de changer l'ordre des jointures, afin d'utiliser des algorithmes plus performants dans certains cas
...
Heuristiques d'optimisation
Le moteur d'optimisation de la base de données va poser des règles de réécriture pour produire des arbres d'exécutions et choisir les moins coûteux.
Il va typiquement appliquer d'abord les opérations réductrices (restrictions et projections).
informations statistiques (modèle de coût)
Une des actions du moteur est d'ordonner les jointures (et les opérations ensemblistes) afin de :
traiter le moins de tuples possibles ;
mobiliser les index existants au maximum ;
utiliser les algorithmes les plus performants.
Pour cela le moteur d'optimisation a besoin de connaître le contenu de la BD : nombre de tuples dans les tables, présence ou non d'index, ...
Le moteur de la BD met à sa disposition des informations statistiques répondant à ces besoins.