Composer la requête
Scénarios du diaporama
Ordre des tables (la première est le FROM)
Où placer chaque condition
Pour la première table, « dans le ON » devient une sous-requête dans le FROM : la table est filtrée dès la lecture.
Style d'écriture
La requête que vous avez composée
Défis
Comment lire
Un cube est le résultat transitoire d'une étape : sa hauteur suit le nombre de rangées (échelle logarithmique), sa largeur le nombre de colonnes. Survolez un cube pour voir le morceau de requête qui l'a produit.
La voie du haut exécute la requête naïvement, dans l'ordre écrit : chaque JOIN applique sa clé et les conditions placées dans son ON, le WHERE s'applique à la fin. La voie du bas imite un optimiseur : chaque condition est poussée vers sa table, puis les tables sont jointes du plus petit ensemble au plus grand. PostgreSQL fait à peu près cela tout seul jusqu'à huit tables, quand ses statistiques sont à jour.
Les données sont celles du diaporama : 3 groupes, 90 étudiants dont 12 filles (3 dans Info 2), 12 cours et 540 inscriptions (6 par étudiant, tout le monde suit Exploitation de données). La question de référence : la moyenne des notes des filles d'Info 2 à ce cours, soit 3 inscriptions.
Pour la théorie : le diaporama Les cubes de données transitoires (PDF), suite de la série Math sur la combinatoire des jointures.