Aller au contenu

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 }