MongoDB Indexation : createIndex() et dropIndex()

⚡ Résumé intelligent

MongoDB Les index stockent un sous-ensemble ordonné des champs d'une collection, permettant ainsi aux requêtes de localiser des documents sans avoir à parcourir chaque enregistrement. Les méthodes `createIndex`, `getIndexes` et `dropIndex` permettent de créer, lister et supprimer ces structures essentielles aux performances.

  • 🚀 Objectif : Les indices permettent MongoDB Évitez les analyses complètes de la collection pour des lectures plus rapides.
  • créer l'index : Crée des index à champ unique ou composés, par ordre croissant ou décroissant.
  • 🔍 obtenir les index : Liste tous les index d'une collection, y compris l'index par défaut _id.
  • 🇧🇷 dropIndex : Supprime un index ; dropIndexes efface tous les index sauf _id.
  • Compromis : Un trop grand nombre d'index ralentit les insertions, les mises à jour et les suppressions.
  • 🤖 Réglage de l'IA : Les assistants recommandent et génèrent automatiquement les index appropriés.

MongoDB Indexation créer un index supprimer un index

Quels sont MongoDB Des index ?

Les index sont très importants dans toute base de données, et avec MongoDB C'est la même chose. Grâce à l'utilisation d'index, l'exécution de requêtes dans MongoDB devient plus efficace.

Si vous aviez une collection contenant des milliers de documents sans index, et que vous effectuiez ensuite une requête pour trouver certains documents, alors dans ce cas… MongoDB il faudrait scanner toute la collection pour trouver les documents. Mais si vous aviez des index, MongoDB utiliserait ces index pour limiter le nombre de documents à rechercher dans la collection.

Les index sont des ensembles de données particuliers qui stockent une partie des données de la collection. Comme les données sont partielles, leur lecture est facilitée. Cet ensemble partiel stocke la valeur d'un champ spécifique, ou d'un ensemble de champs, triée par valeur.

Comprendre l'impact des index

Même si l'introduction a montré que les index sont utiles pour les requêtes, un trop grand nombre d'index peut ralentir d'autres opérations telles que les opérations d'insertion, de suppression et de mise à jour.

Si des opérations fréquentes d'insertion, de suppression et de mise à jour sont effectuées sur les documents, les index devront être modifiés aussi souvent, ce qui constituera une surcharge pour la collection.

L'exemple ci-dessous illustre les valeurs de champ pouvant constituer un index dans une collection. Un index peut être basé sur un seul champ de la collection ou sur plusieurs champs.

Dans l'exemple ci-dessous, l'identifiant de l'employé est « 1 » et l'employéCode Les identifiants « AA » servent à indexer les documents de la collection. Ainsi, lors d'une recherche, ces index permettent de trouver rapidement et efficacement les documents recherchés.

Ainsi, même si la requête de recherche est basée sur l'employéCode « AA », ce document serait retourné.

Comprendre l'impact des index

Comment créer des index : createIndex()

Création d'un index dans MongoDB se fait en utilisant le créerIndex méthode.

L’exemple suivant montre comment ajouter un index à une collection. Supposons que nous ayons une collection Employee, qui comporte les champs nommés « Employeeid » et « EmployeeName ».

Créer des index avec createIndex

db.Employee.createIndex({Employeeid:1})

Code Explication:

  1. Le créerIndex La méthode est utilisée pour créer un index basé sur le « Employeeid » du document.
  2. Le paramètre « 1 » indique que lors de la création de l’index avec les valeurs du champ « Employeeid », celles-ci doivent être triées par ordre croissant. Veuillez noter que cela diffère du champ _id (qui identifie chaque document de manière unique). MongoDB La création est automatique. Les documents seront désormais triés selon l'identifiant de l'employé et non plus selon le champ _id.

Si la commande est exécutée avec succès, le résultat suivant s'affichera :

Sortie :

sortie de createIndex

  1. La valeur numIndexesBefore : 1 indique le nombre de valeurs de champ dans les index avant l’exécution de la commande. Chaque collection possède le champ _id, qui compte également comme une valeur de champ ; par conséquent, numIndexesBefore vaut 1.
  2. La valeur numIndexesAfter : 2 indique le nombre de valeurs de champ dans les index après l’exécution de la commande.
  3. Le résultat « ok : 1 » indique que l'opération a réussi et que le nouvel index est ajouté à la collection.

Le code ci-dessus montre comment créer un index basé sur la valeur d'un seul champ, mais il est également possible de créer un index basé sur plusieurs valeurs de champs. L'exemple suivant illustre comment procéder :

Créer un index composé sur plusieurs champs

db.Employee.createIndex({Employeeid:1, EmployeeName:1})

La méthode createIndex prend désormais en compte plusieurs valeurs de champ, ce qui entraîne la création d'un index basé sur « Employeeid » et « EmployeeName ». Les indications Employeeid:1 et EmployeeName:1 précisent que l'index doit être créé sur ces deux valeurs de champ, le préfixe :1 indiquant un ordre croissant. Il s'agit d'un index composé.

Comment trouver les index : getIndexes()

Trouver un index dans MongoDB se fait en utilisant le obtenir les index méthode. L'exemple suivant montre comment procéder :

Trouver les index avec getIndexes

db.Employee.getIndexes()

La méthode getIndexes est utilisée pour rechercher tous les index d'une collection.

Si la commande est exécutée avec succès, le résultat suivant s'affichera :

Sortie :

Sortie de getIndexes

Le résultat affiche un document indiquant la présence de deux index dans la collection : le champ _id et le champ Employeeid. Le symbole :1 précise que les valeurs des champs de l’index sont créées par ordre croissant.

Comment supprimer des index : dropIndex()

Suppression d'un index dans MongoDB se fait en utilisant le dropIndex méthode. L'exemple suivant montre comment procéder :

Drop Indexes avec dropIndex

db.Employee.dropIndex({Employeeid:1})

La méthode dropIndex prend en paramètre les valeurs des champs à supprimer de l'index.

Si la commande est exécutée avec succès, le résultat suivant s'affichera :

Sortie :

sortie dropIndex

  1. La valeur nIndexesWas : 3 indique le nombre de valeurs de champ dans les index avant l’exécution de la commande. Chaque collection possède le champ _id, qui compte également comme une valeur de champ.
  2. La sortie ok: 1 spécifie que l'opération a réussi et le champ « Employeeid » est supprimé de l'index.

Pour supprimer tous les index d'une collection en une seule fois, on peut utiliser la commande dropIndexes. L'exemple suivant illustre la procédure :

Supprimer tous les index avec dropIndexes

db.Employee.dropIndexes()

La méthode dropIndexes supprimera tous les index à l'exception de l'index _id.

Si la commande est exécutée avec succès, le résultat suivant s'affichera :

Sortie :

sortie dropIndexes

  1. nIndexesWas : 2 indique le nombre de valeurs de champ dans les index avant l’exécution de la commande.
  2. Chaque collection possède le champ _id, qui compte également comme une valeur de champ et ne sera pas supprimé par MongoDB; c'est ce que ce message indique.
  3. La sortie ok: 1 spécifie que l'opération a réussi.

FAQ

Un index à champ unique trie un seul champ et convient aux requêtes filtrant uniquement sur ce champ. Un index composé couvre plusieurs champs dans une seule structure et convient aux requêtes filtrant ou triant ces champs simultanément. Les index composés prennent en charge jusqu'à 32 champs.

Le champ _id est MongoDBLa clé primaire de `s` permet à chaque collection de se voir attribuer automatiquement un index `_id` unique. Cet index ne peut pas être supprimé. C'est pourquoi `numIndexesBefore` est initialisé à 1 avant même l'ajout d'un index personnalisé.

Exécutez la requête avec `.explain("executionStats")`. Dans le plan gagnant, une étape IXSCAN signifie qu'un index a été utilisé, tandis qu'une étape COLLSCAN signifie… MongoDB J'ai scanné tous les documents et un nouvel index pourrait être utile.

Utilisez l'étape d'agrégation `$indexStats` pour observer la fréquence d'accès à chaque index. Les index très peu utilisés consomment inutilement de l'espace disque et ralentissent les écritures ; supprimez-les donc avec `dropIndex` afin d'optimiser la taille de la collection.

Les outils d'IA analysent les journaux de requêtes lentes et suggèrent les champs à indexer. MongoDBL'outil Performance Advisor classe les recommandations d'indices par impact, aideping Vous ajoutez les index à forte valeur ajoutée et vous ignorez ceux qui sont redondants.

Oui. Les assistants d'AI Copilot transforment les requêtes en langage clair en syntaxe createIndex correcte, y compris les clés ascendantes ou descendantes et l'ordre des champs composés, puis expliquent l'index résultant.

ESR signifie Égalité, Tri, Plage. Lors de la création d'un index composite, placez d'abord les champs de correspondance d'égalité, puis les champs de tri, et enfin les filtres de plage. Cet ordre permet MongoDB utiliser l'index de la manière la plus efficace.

Une requête couverte est résolue intégralement à partir d'un index, sans lecture des documents. Lorsque tous les champs du filtre et de la projection résident dans un seul index, MongoDB renvoie des résultats plus rapidement.

Résumez cet article avec :