Module : ALGÈBRE RELATIONNELLE
&
LANGAGE SQL
(Bases de Données Relationnelles)
Le langage SQL - Partie 4 : Les vues et les index
Pr. Salma MOULINE
TC MIP-Informatique — S4 Département d’Informatique
2024/2025 Laboratoire LRIT
Les vues
• Dé nition
• Une vue est une table virtuelle issue d’une requête SQL.
• Elle n’existe pas physiquement dans la base de données, mais af che dynamiquement les
résultats d'une requête.
• Permet de simpli er l'accès aux données complexes, masquer la complexité des jointures,
ltrer ou restreindre l'accès à certaines colonnes ou lignes.
• Syntaxe de création
CREATE VIEW nom_vue AS
SELECT ... FROM ... WHERE ...;
Salma MOULINE —- 2024/2025
fi
fi
fi
Les vues
• Exemple
CREATE VIEW Ens_FSR AS Création d’une vue Ens_FSR qui a comme schéma
SELECT nom, département, le nom et le département des enseignant de la FSR
FROM Enseignant
WHERE établissement = ‘FSR';
• Avantages des vues
‣ Simpli cation des requêtes complexes.
‣ Sécurité : masquer certaines colonnes sensibles.
‣ Maintenance facilitée : modi cation de la requête dans la vue sans changer les
applications clientes.
‣ Réutilisation et abstraction.
Salma MOULINE —- 2024/2025
fi
fi
Les index
• Dé nition
Un index est une structure de données qui permet d’accélérer des opérations de
recherche et de tri dans une table.
- Sans index, MySQL doit scanner toutes les lignes d’une table pour trouver les
résultats d’une requête, ce qui peut être très lent sur de grandes tables.
- Avec un index, MySQL peut accéder rapidement aux données ciblées, améliorant
ainsi considérablement les performances des requêtes.
Salma MOULINE —- 2024/2025
fi
Les index
• Principaux types d'index
- Index primaire (PRIMARY KEY) : identi e de manière unique chaque ligne. Ne peut pas
être nul (Unicité et Identi cation)
- Index unique (UNIQUE) : garantit l'unicité des valeurs dans une colonne. Peut être nul
(sauf indication contraire)
- Index simple (INDEX) : accélère les recherches sur une ou plusieurs colonnes.
Amélioration de la vitesse des requêtes SELECT
- Index plein texte (FULLTEXT) : pour la recherche textuelle avancée.
Salma MOULINE —- 2024/2025
fi
fi
Les index
• Comment ça marche ?
- La plupart des index (PRIMARY KEY, UNIQUE, INDEX, FULLTEXT) sont stockés sous
forme d’arbres B-tree, permettant des recherches rapides par égalité ou par intervalle.
- En MySql les tables InnoDB utilisent la clé primaire comme index clusterisé, ce qui
signi e que les données sont physiquement ordonnées selon cette clé.
- Les index secondaires (non-clustered) pointent vers la clé primaire pour retrouver les
lignes rapidement.
Salma MOULINE —- 2024/2025
fi
Les index
• Avantages des index
- Accélération des requêtes SELECT : Les index réduisent le nombre de lignes à parcourir,
surtout dans les clauses WHERE, JOIN, ORDER BY, GROUP BY.
- Optimisation des jointures : Indexer les colonnes utilisées dans les jointures améliore
considérablement la vitesse.
- Gestion ef cace des grandes tables : Sans index, les requêtes sur de grandes tables sont
lentes car elles scannent toutes les lignes.
Salma MOULINE —- 2024/2025
fi
Les index
• Inconvénients des index
- Coût en espace disque : Les index occupent de la place supplémentaire.
- Impact sur les opérations d’écriture : INSERT, UPDATE, DELETE sont plus lents car les
index doivent être mis à jour.
- Sur-indexation : Trop d’index peuvent dégrader les performances globales.
Salma MOULINE —- 2024/2025
Les index
• Syntaxe de création
- CREATE INDEX nom_index ON nom_table (colonne1, colonne2, ...);
• Ajout d’index à une table existante
- ALTER TABLE etudiant ADD INDEX idx_age (age);
• Exemple
- CREATE INDEX idx_nom ON etudiant(nom);
Salma MOULINE —- 2024/2025
Les index
• Bonnes pratiques
- Indexer les colonnes fréquemment utilisées dans les clauses WHERE, JOIN, ORDER BY.
- Utiliser des index composites lorsque plusieurs colonnes sont souvent utilisées ensemble
dans les ltres.
- Éviter d’indexer des colonnes avec peu de valeurs distinctes (faible cardinalité).
- Surveiller et analyser les requêtes avec `EXPLAIN` pour véri er l’utilisation des index.
Salma MOULINE —- 2024/2025
fi