Le SQL (Structured Query Language) permet d'interroger une base de données, d'en modifier des informations. C'est un langage universel d'interrogation des bases de données, qui permet à différents systèmes d'échanger des données entre eux.
Avec des langages tels que sql, l'utilisateur précise les propriétés des données qui l'intéressent sans
fournir d'algorithme d'accès. Les optimiseurs de requête sont là pour cela, leurs objectifs sont de :
* vérifier la correction syntaxique de la question,
* rechercher des questions équivalentes plus simples,
déterminer l'ordre des opérations élémentaires d'accès en vue de :
* réduire le nombre d'entrées/sorties,
* réduire le temps cpu,
* réduire la taille des ressources mémoires nécessaires,
* optimiser en premier les questions les plus fréquentes.
Chaque sgbd contient un optimiseur de requêtes qui peut être légèrement différent d'un sgbd à l'autre.
Les algorithmes utilisés sont rarement connus en détail mais les grandes étapes de l'optimisation sont
en général :
1.Représenter la requête sous une forme interne et la décomposer en une séquence d'opérations
élémentaires.
2.Transformer la requête par :
-simplification : remplacement d'une question par une question équivalente plus simple,
-ordonnancement des opérations élémentaires.
3.Construire un ensemble de plans d'exécution candidats.
4.Calculer le coût de chaque plan et choisir le meilleur.
5.Executer la requête.