Retour aux outils

Le simulateur des cubes transitoires

Composez une requête SQL par blocs, puis regardez ce qui se passe en mémoire : chaque étape fabrique un cube de rangées × colonnes. Comparez l'ordre où vous l'avez écrite avec l'ordre que l'optimiseur choisirait, et faites descendre le plus gros cube.

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

    
                
    Dans l'ordre où vous l'avez écrite plus gros cube 0 · rangées manipulées 0

    Dans l'ordre que l'optimiseur choisirait plus gros cube 0 · rangées manipulées 0

    Résultat
    -
    Facteur entre les deux voies
    -
    sur les rangées manipulées
    Mémoire du plus gros cube
    -
    à 40 octets par cellule, ordre de grandeur

    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.

      20 rangées ou moins jusqu'à 100 jusqu'à 1 000 au-delà

      Pour la théorie : le diaporama Les cubes de données transitoires (PDF), suite de la série Math sur la combinatoire des jointures.