Académique Documents
Professionnel Documents
Culture Documents
Introduction
Mise en contexte du projet pratique
Notes annexes
Développement
S1: Prise en main de l'algorithme B-Tree
S2 : Vue d'ensemble de la dernière partie
Classes et familles d'opérateurs
Index et collationnements
S3 : Examiner l'utilisation des index
Conclusion
01
Introduction
04/22
Mise en contexte du projet pratique
Notre projet pratique consiste à mettre en place une architecture
de BD capable de supporter un système de vote électronique.
Nous avons plusieurs types d'index : B-Tree, Hash, GiST, SP-GiST, BRIN,
GIN, et l'extension BLOOM. Mais dans notre étude, nous nous
concentrerons sur l'algorithme par défaut B-Tree.
02
Développement
S1: Prise en main de l'algorithme B-Tree
08/22
Prise en main de l'algorithme B-Tree
La création d'un index implique l'instruction CREATE INDEX, qui vous
permet de nommer l'index, de spécifier la table et la colonne ou les
colonnes à indexer, et d'indiquer si l'index est en ordre croissant ou
décroissant. La syntaxe de base de CREATE INDEX est la suivante.
Pratique :
Créer un index sur la colonne 'prenoms' de la table 'etudiants'
Créer un index sur la colonne 'genre' de la table 'delegues'
Exécuter la commande ' \d delegues; ' pour voir la structure de la
table 'delegues'. Que remarquez vous ?
09/22
Prise en main de l'algorithme B-Tree
Nous pouvons aussi spécifier le type d'index à créer en utilisant le mot-clé
USING. La syntaxe est la suivante(index_type étant le type d'index à
créer) :
Pratique :
Créer un index de type BTree sur la colonne 'informations' de la table
'filieres' .
Vérifier que l'index a bel et bien été créé.
Nous n'aurons pas besoin de cet index dans la suite du TP. Savez vous
comment la supprimer ?
10/22
Prise en main de l'algorithme B-Tree
Un index peut-être supprimé à l'aide de la commande PostgreSQL DROP.
Des précautions doivent être prises lors de la suppression d'un index, car
les performances peuvent être ralenties ou améliorées. La syntaxe de
base est la suivante :
DROP INDEX index_name;
Pratique :
Supprimer à présent l'index créé précédemment.
Vérifier si l'index a bel et bien été supprimé.
Dans la prochaine partie, nous verrons les index multicolonnes, les index
uniques, les index partiels, les index d'expressions, les index couvrants ainsi
que les index implicites.
11/22
Prise en main de l'algorithme B-Tree
Un index à colonne unique(à une seule colonne) est un index créé sur la base d'une
seule colonne de table. La syntaxe de base est :
CREATE INDEX index_name ON table_name(column_name);
Un index multicolonne est défini sur plusieurs colonnes d'une table. La syntaxe de
base est la suivante :
CREATE INDEX index_name ON table_name(column1_name,
column2_name, …);
Astuce :
Prenez en considération la ou les colonnes que vous pouvez utiliser très
fréquemment dans la clause WHERE d'une requête comme conditions de filtre.
Pratique :
Créer un index multicolonne sur les colonnes 'numero_carte' et
'numero_liste' de la table 'votes'. Vérifier que l'index a été créé.
12/22
Prise en main de l'algorithme B-Tree
Les index uniques sont utilisés non seulement pour les performances, mais
également pour l'intégrité des données. Un index unique ne permet pas d'insérer des
valeurs en double dans la table. La syntaxe de base est la suivante :
CREATE UNIQUE INDEX index_name ON table_name(column_name);
Un index partiel est un index construit sur un sous-ensemble d'une table, le sous-
ensemble est défini par une expression conditionnelle. L'index contient uniquement
des entrées pour les lignes de la table qui satisfont le prédicat. La syntaxe de base
est la suivante :
CREATE INDEX index_name ON table_name(column_name) conditional_expression;
Pratique :
Ouf ! Créer un index qui rend unique les entrées de la tables 'filieres' sur la colonne
'titre'.
Créer un index partiel pour améliorer la requête suivante :
SELECT * FROM delegues WHERE numero_liste >= 2 AND genre = 'value';
13/22
Prise en main de l'algorithme B-Tree
Les index implicites sont des index créés automatiquement par le serveur de base de
données lors de la création d'un objet. Des index sont créés automatiquement pour
les contraintes de clé primaire et les contraintes d'unicité.
Les index d'expressions sont des fonctions ou expressions scalaires calculées à
partir d'une ou plusieurs colonnes de la table. Ils sont utiles pour un accès rapide au
table en utilisant les résultats de calcul. La syntaxe de base est la suivante :
CREATE INDEX index_name ON table_name(fonction_or_expression);
Pratique :
Afficher la structure de la table 'filieres'. Nous n'avons pas défini un index
sur la colonne 'id_filiere' mais pourtant on en a une. Pourquoi ?
Créer un index pour améliorer la requête suivante :
SELECT * FROM etudiants WHERE lower(nom) = 'valeur';
14/22
Prise en main de l'algorithme B-Tree
Un index couvrant sont est un index conçu pour inclure les colonnes nécessaires pour
un type de requête particulier. Dans ce cas alors, l'index contient non seulement les
valeurs de la colonne indexée mais aussi de celle incluse. La syntaxe est la suivante :
CREATE INDEX index_name ON table_name(column_name) INCLUDE (other_column);
ALLER PLUS LOIN
La commande EXPLAIN -->comment PostgreSQL prévoit d’exécuter la requête.
EXPLAIN query;
La commande ANALYSE --> exécuter la requête et afficher des informations
supplémentaires sur son exécution
EXPLAIN ANALYSE query ;
Pratique :
Créer un index couvrant sur les colonnes 'numero_liste' et 'date' de la table
'votes'(la colonne 'numero_liste' déjà indexée).
Pouvez-vous utiliser les commandes EXPLAIN et ANALYSE sur une requête ?
A quoi sert la commande '\di ;'.
S2 : Vue d'ensemble de la dernière partie
Pratique :
Un exemple concret: trier les noms de famille des étudiants dans l’ordre
alphabétique.
Exécuter la requête : SELECT nom FROM etudiants;
Créer un index sur la colonne “nom” de la table 'etudiants' et spécifier le
collationnement "fr-BE-x-icu"(encode français belge) pour cette colonne.
Vérifier que l'index a bel et bien été créé.
Exécuter une requête de sélection qui permet de trier le nom des étudiants
par ordre alphabétique.
Que pouvez-vous conclure ?
S3 : Examiner l'utilisation des index
Pratique :
Exécuter la commande '\di ' vu précédemment.
Pouvez-vous donner alors apporter des critiques à l'utilisation des index dans
notre base de données ?
03
Conclusion
21/22
- Fin