Index des champs uniques et composés#
Index uniques#
Objectif des index uniques#
- Assurer l'intégrité des données en empêchant les doublons pour un champ spécifique
- Les index uniques empêchent l'insertion de documents avec des valeurs de champ en double
Création d'un index unique#
- Utiliser l'option { unique: true } lors de la création de l'index
- Exemple de commande :
db.collection.createIndex({ champ: 1 }, { unique: true })
Exemple d'index unique#
db.collection.createIndex({ champ: 1 }, { unique: true })
Index composés#
Définition des index composés#
- Les index composés combinent plusieurs champs pour créer un index
- Ils permettent d'optimiser les requêtes impliquant plusieurs critères de recherche
Avantages des index composés#
- Réduisent le besoin de parcourir l'ensemble des documents pour les requêtes impliquant plusieurs champs
- Accélèrent les requêtes de recherche et de tri sur plusieurs champs
Création d'un index composé#
- Utiliser la commande
db.collection.createIndex({ champ1: 1, champ2: -1 })
- Exemple: création d'un index composé sur les champs champ1 (ascendant) et champ2 (descendant)
Exemple#
Pour créer un index composé
db.users.createIndex({ age: 1, lastName: -1 })
Pour effectuer une requête utilisant un index composé
db.users.find({ age: { $gte: 25 }, lastName: "Doe" }).sort({ age: 1, lastName: -1 })
Ordre des champs dans les index composés#
Importance de l'ordre des champs#
- L'ordre des champs dans les index composés affecte la manière dont MongoDB utilise l'index
- Les champs les plus restrictifs doivent être placés en premier
Exemple d'ordre des champs#
- Les champs les plus restrictifs doivent être placés en premier
- Les champs avec une grande diversité de valeurs
- Les champs les moins fréquemment utilisés en tant que critères de recherche
- Exemple :
db.collection.createIndex({ age: 1, nom: 1 })
(l'âge étant un champ plus restrictif que le nom)
Utilisation des préfixes d'index#
- Les préfixes d'index sont des sous-ensembles d'index composés
- Les requêtes utilisant un préfixe d'index peuvent tirer parti de l'index composé
- Exemple :
db.collection.find({ age: 30 }).sort({ nom: 1 }
(utilise l'index composé{ age: 1, nom: 1 }
)
Utilisation des index composés pour trier les résultats#
Les index composés peuvent être utilisés pour trier les résultats des requêtes#
- Améliore les performances de tri
- Évite les tris en mémoire
Respecter l'ordre des champs dans l'index pour le tri#
- La direction des champs (ascendante/descendante) doit être respectée
- Exemple :
- Index :
{ champ1: 1, champ2: -1 }
- Tri valide :
{ champ1: 1, champ2: -1 }
- Tri invalide :
{ champ1: -1, champ2: 1 }
- Index :