Chapitre 2. Interrogation des indexes
Chapitre 2
Interrogation des indexes
Informations sur la Base de Données
— Page disque : 8ko
— Taille d’un ROWID : 10o
— PCTFree : 10% (page utile 7 200o)
—|M| = 11
— Clustering Factor, par défaut : dense (φ=||R||), non-dense (φ=|R|)
— Schéma de la base :
Table Attributs Taille Nb tuples Nb tuples/pages
Cours (Id_Cours, Id_Enseignant, Intitule) 20 pages 2 200 112
Personne (Id_Personne, Nom, Prenom, Annee_Naissance) 2 000 pages 124 000 62
Salle (Id_Salle, Localisation, Capacite) 5 pages 500 112
Reservation (Id_Salle, Id_Cours, Date, heure_debut, heure_fin) 2 000 pages 514 000 285
2.1 Requêtes mono-attributs
2.1.1 Pour la requête suivante, donner le coût d’évaluation en séquentiel, index dense, index non-dense :
SELECT Nom, Prenom FROM Personne WHERE Id_Personne = 125 ;
2.1.2 Idem pour la requête suivante, sachant la répartition des années de naissance dans l’histogramme 2.1.2. Index
sur l’année de naissance :
SELECT Nom, Prenom FROM Personne WHERE Annee_Naissance = 1979 ;
Année 1978 1979 1980 1981 1982 1983 1984 …
Pourcentage 2,04% 3,226% 3,2% 2,12% 2,63% 2,48% 1,99% … Histogramme de répartition des
années de naissance
2.1.3 Pour la requête précédente, on créer un index sur Annee_Naissance et couvrant sur Nom, Prenom. Calculer
l’ordre de l’index (Nom et Prenom sont stockés dans l'index), sa hauteur max et le coût de la requête.
2.2 Requête multi-attribut
2.2.1 Donner le nombre de tuples résultats pour la requête suivante, sachant qu’il y a 5 000 prénoms différents et
3.226% des personnes sont nées en 1979 :
SELECT Nom, Prenom FROM Personne
WHERE Annee_Naissance = 1979 AND Prenom = 'Nicolas' ;
2.2.2 Donner le coût d’évaluation pour la requête précédente avec :
— En séquentiel,
— Index dense sur Annee_Naissance,
— Index non-dense sur Annee_Naissance,
— Index dense sur Annee_Naissance et couvrant sur Nom, puis Prénom (les 3 attributs sont dans l’index 1),
— Index dense sur le Prénom, avec un clustering factor,φ= 100000.
2.2.3 Peut-on combiner les deux indexes denses sur Annee_Naissance et Prenom, avant d’accéder aux données ?
Calculer le coût d’exécution (deux parcours, un accès avec sélectivités combinées, avec φ=||P ersonne||)
2.2.4 Donner le coût d’un index dense sur Annee_Naissance et couvrant sur Prénom, puis Nom.
1. La recherche se fait d’abord sur l’année, puis sur le nom, et enfin sur le prénom
Nicolas Travers Optimisation de Bases de Données 5/12