INDEX
Catégorie : performance
Structure de données qui accélère les recherches (WHERE), les tris (ORDER BY) et les jointures sur les colonnes indexées, au détriment de l'espace disque et de la vitesse d'écriture (INSERT/UPDATE/DELETE).
📝 Syntaxe
CREATE INDEX nom_index ON table (col) ou CREATE UNIQUE INDEX nom_index ON table (col)💡 Exemples
CREATE INDEX idx_nom ON clients (nom);→ Création d'un index non unique sur la colonne 'nom' de la table 'clients'.
CREATE UNIQUE INDEX idx_email ON utilisateurs (email);→ Création d'un index unique sur 'email', empêchant les doublons (comme une contrainte UNIQUE).
🎯 Exercice
Sur une table 'ventes' avec des recherches fréquentes par 'date_vente' et 'client_id', et des tris par 'montant', quels index proposeriez-vous ?
Voir la solution
CREATE INDEX idx_date_client ON ventes(date_vente, client_id); et CREATE INDEX idx_montant ON ventes(montant);. Un index composite sur (date_vente, client_id) est utile si on recherche souvent par ces deux critères ensemble.⚠️ Pièges courants
- Trop indexer une table lourde à mettre à jour (chaque UPDATE doit mettre à jour l'index).
- Indexer des colonnes rarement utilisées dans les conditions de recherche.
- Ne pas indexer les colonnes de clés étrangères, ce qui ralentit les jointures.
