Précédent Index Suivant

3   Index et Optimisation (6 points)

3.1   Arbres B+ (3 points)

Voici une instance de la table NoteMag et un arbre B+ d'ordre 2 sur l'attribut code.

6cm
NoteMag
code titre note
'A345' 'HIFI' 8
'P123' 'Audio Expert' 6
'X254' 'HIFI' 7
'K783' 'Son & Audio' 3
'P345' 'HIFI' 6
'P512' 'Audio Expert' 8
'L830' 'Audio Expert' 8
'M240' ''HIFI'' 6
11cm

La table occupe plusieurs pages disque dont chacune peut contenir au maximum 3 n-uplets.

  1. Est-ce qu'il s'agit d'un index dense ou non-dense ?

    Solution : Il s'agit d'un index dense.
  2. Dessinez les arbres successifs obtenus après l'insertion du n-uplet ['R290', 'Hifi', 8], suivi par l'insertion du n'uplet ['S679', 'Audio Expert', 5];

    Solution : Après les deux insertions on obtient l'arbre suivant :

  3. Soit la requête suivante :
    select *
    from NoteMag
    where code between 'A000' and 'X000';
    
    Pour évaluer cette requête, on suppose que le tampon de lecture peut contenir une seule page et l' index tient en mémoire. Dans ce cas, est-ce qu'il est préférable d'utiliser l'index ou de parcourir la table séquentiellement ? Pourquoi ?

    Solution : Une lecture séquentielle est préférable : la sélectivité de l'index est très basse, et comme il s'agit d'un index dense, on risque de lire la même page plusieurs fois.

3.2   EXPLAIN (3 points)

On donne ci-dessous une requête SQL et le plan d'exécution fourni par Oracle :
Requête SQL :
select desig, marque, prix
  from Produits, PrixFour, NoteMag
 where Produits.code=PrixFour.code
   and Produits.code=NoteMag.code
   and note > 8;
Plan d'exécution :
0 SELECT STATEMENT
  1 MERGE JOIN
    2 SORT JOIN
      3 NESTED LOOPS
        4 TABLE ACCESS FULL NOTEMAG
        5 TABLE ACCESS BY INDEX ROWID PRODUITS
          6 INDEX UNIQUE SCAN A34561
    7 SORT JOIN
      8 TABLE ACCESS FULL PRIXFOUR
  1. Existence d'index : Existe-t-il un index ? sur quel(s) attribut(s) de quel(s) table(s) ?

    Solution : Il existe un index sur l'attribut code de la table Produits.
  2. Algorithme de jointure : Expliquer en détail le plan d'exécution (accès aux tables, sélections, jointure, projections)
  3. Ajout d'index : On crée un index sur l'attribut note de la table NoteMag. Expliquez les améliorations en terme de plan d'exécution apportées par la création de cet index.
Solution :
  1. après création d'index le plan est :
    
    Plan d'execution
    --------------------------------------------------------------------------------
    0 SELECT STATEMENT
      1 NESTED LOOPS
        2 NESTED LOOPS
          3 TABLE ACCESS FULL PRIXFOUR
          4 TABLE ACCESS BY INDEX ROWID PRODUITS
            5 INDEX UNIQUE SCAN PRODUITS_CODE
        6 TABLE ACCESS BY INDEX ROWID NOTEMAG
          7 INDEX RANGE SCAN NOTE_MAG
    

Précédent Index Suivant