next up previous
suivant: Quelques points sur l'organisation monter: optimisation précédent: Ce qui se passe

Optimisation et Algèbre relationnelle

Le langage SQL est déclaratif : l'utilisateur indique ce qu'il veut, mais il ne s'occupe pas de comment l'obtenir. C'est au système de chercher comment accéder aux données, quelles sont les différentes solutions, et quelle est la meilleure.

Exemple :

select ue.* 
from diplome natural join unite_enseignement
where nb_etudiants>100;

Cette requête retourne 70 enregistrements. Il y a 28 diplomes, 271 unites d'enseignement, et 3 diplomes avec plus de 100 étudiants inscrits. Chaque unite d'enseignement concerne un seul diplome.

Soit

Pour l'optimisation : on utilise les règle de réécriture autorisées par les propriétés de l'algèbre relationnelle.

Ainsi, on favorisera les sélections à un niveau bas, car cet opérateur est considéré comme plus réducteur, tandis que les produits sont remontés le plus tard possible (le plus haut dans l'arbre de la requête).

Est-ce que cela est toujours vrai?

Prenons un exemple :

(base bibliothèque) Quelles sont les oeuvres dont un exemplaire a été acheté il y a plus d'un mois et dont l'auteur est Pierre Bourdieu?

select o.titre
from livre l , oeuvre o
where l.date_achat+ cast('1 month' as interval)<current_date 
and o.id_oeuvre = l.id_oeuvre
and o.auteur = 'Pierre Bourdieu';

La table Livre : 1500 enregistrements, la table oeuvre : 300 enregistrements. 98% des achats ont plus d'un mois, et seulement 30% des oeuvres ont un exemplaire à la bibliothèque. Il y a 3 titres de Pierre Bourdieu dans la bibliothèque, en 2 exemplaires chacun, qui ont tous été achetés il y a plus d'un mois.

1ère solution (2 sélections puis une jointure) :

Total : 1500 + 1470 + 300 + 3 + 4410 + 3 = 7686 E/S

2ème solution (1 sélection, 1 jointure puis 1 sélection) :

Total : 300 + 3 + 4500 + 6 + 6 + 6 = 4821 E/S

Il s'agit d'un cas où une jointure est plus réductrice qu'une sélection!

Ce cas est rare, mais il illustre bien le fait qu'une bonne optimisation ne peut pas se contenter d'une réécriture algébrique. L'optimiseur tient compte

  1. des chemins d'accès aux données
  2. des différents algorithmes implantant une même opération algébrique
  3. d'informations statistiques sur la base de données.


next up previous
suivant: Quelques points sur l'organisation monter: optimisation précédent: Ce qui se passe
Anne 2006-12-13