Présentation des index
Cette page décrit l'indexation pour Firestore compatible avec MongoDB. Firestore compatible avec MongoDB ne crée aucun index par défaut. Pour améliorer les performances de la base de données, créez des index pour vos requêtes les plus courantes.
Les index ont un impact important sur les performances d'une base de données. Si un index existe pour une requête, la base de données peut renvoyer efficacement les résultats en réduisant la quantité de données à analyser et le travail nécessaire pour trier les résultats. Toutefois, les entrées d'index augmentent les coûts de stockage et la quantité de travail effectuée lors d'une opération d'écriture sur les champs indexés.
Définition et structure des index
Un index se compose des éléments suivants :
- un ID de collection ;
- Liste des champs de la collection donnée
- un ordre (croissant ou décroissant) pour chaque champ.
Un index peut également activer les options sparse et multikey.
Ordre des index
L'ordre et le sens de tri de chaque champ définissent l'index de manière unique. Par exemple, les deux index suivants sont distincts et ne sont pas interchangeables :
Collection | Champs |
---|---|
cities | pays (ordre croissant), population (ordre décroissant) |
cities | population (ordre décroissant), pays (ordre croissant), |
Lorsque vous créez un index pour prendre en charge une requête, incluez les champs dans le même ordre que dans votre requête.
Densité de l'index
Par défaut, les entrées d'index stockent les données de tous les documents d'une collection. C'est ce qu'on appelle un index non clairsemé. Une entrée d'index sera ajoutée pour un document, que celui-ci contienne ou non l'un des champs spécifiés dans l'index. Les champs inexistants sont traités comme ayant une valeur NULL lors de la génération des entrées d'index. Pour modifier ce comportement, vous pouvez définir l'index comme index creux.
Index creux
Un index à faible densité n'indexe que les documents de la collection contenant une valeur (y compris nulle) pour au moins l'un des champs indexés. Un index creux réduit les coûts de stockage et peut améliorer les performances.
Index multiclés pour les valeurs de tableau
Si vous créez un index sur un champ contenant des valeurs de tableau, vous devez créer un index multiclés. Un index régulier ne peut pas indexer les valeurs de tableau. Un index multiclés accepte au maximum un champ de tableau dans la définition de l'index et peut être utilisé pour les opérations qui parcourent les valeurs de tableau.
N'utilisez les index multiclés que si vous savez que vous devez indexer des valeurs de tableau. Les index standards présentent des avantages lors du traitement d'une requête. Par exemple, les index standards peuvent filtrer les valeurs d'une plage plus efficacement.
Les situations suivantes entraînent des erreurs lorsque vous utilisez des valeurs de tableau et des index multiclés :
- Une opération tente d'ajouter une valeur de tableau à un champ indexé par un index régulier. Pour ajouter la valeur du tableau, vous devez supprimer les index réguliers existants sur ce champ et les recréer en tant qu'index multiclés.
- Vous essayez de créer un index standard sur un champ qui contient une valeur de tableau. Vous devez créer un index multiclés ou supprimer les valeurs du tableau.
- Une opération tente d'indexer plusieurs champs avec des valeurs de tableau. Vous ne pouvez pas avoir plusieurs champs avec une valeur de tableau dans un index multiclés. Pour continuer, modifiez votre modèle de données ou vos définitions d'index.
- Vous essayez de créer un index multiclés où deux chemins de champ partagent un préfixe commun, comme
users.posts
etusers.zip
.
Résoudre les erreurs de création d'index
Vous risquez de rencontrer des erreurs de création d'index lorsque vous gérez vos index. Une opération d'indexation peut échouer si la base de données rencontre un problème avec les données. Les opérations d'indexation peuvent échouer pour les raisons suivantes :
- Vous avez atteint une limite d'index. Par exemple, l'opération peut avoir atteint le nombre maximal d'entrées d'index par document. Si la création de l'index échoue, un message d'erreur s'affiche. Si vous n'avez pas atteint de limite d'index, réessayez l'opération d'index.
- Un index multiclés est requis. Au moins l'un des champs indexés contient une valeur de tableau. Pour continuer, vous devez utiliser un index multiclés ou supprimer les valeurs du tableau.
- Une opération tente d'indexer plusieurs champs avec des valeurs de tableau. Vous ne pouvez pas avoir plusieurs champs avec une valeur de tableau dans un index multiclés. Pour continuer, modifiez votre modèle de données ou vos définitions d'index.
Étapes suivantes
- Découvrez comment créer et gérer des index.