Maison > Questions et réponses > le corps du texte
Ma collection de documents a un identifiant (bien sûr), mais possède également un champ qui contient le même identifiant. Question : Est-il plus rapide de récupérer ce document par identifiant
collection.doc(id).get().then(....)
ou sur demande
collection.where('id', '==', id).get().then(...)
Je viens de refactoriser mon code de fonction. J'avais l'habitude d'utiliser des requêtes, mais maintenant j'utilise directement les identifiants des documents de la collection. Mais j’ai l’impression que cette approche directe prend beaucoup plus de temps. Je me demande juste si ce n'est qu'une impression...
P粉2324090692023-09-15 00:02:17
Théoriquement, il n'y a aucune différence de performances entre les deux. Les requêtes Firestore évoluent en fonction du nombre de documents renvoyés par la requête. Si les deux requêtes renvoient 1 document, elles doivent alors effectuer la même opération. Ils utilisent essentiellement des index pour trouver des valeurs uniques.
Si vous souhaitez vraiment effectuer un microbenchmark, vous devez effectuer vos propres tests pour savoir lequel est le plus rapide. Mais je pense que vous allez passer beaucoup de temps à optimiser quelque chose qui n'a pas besoin d'être optimisé. Vous pouvez décider vous-même si cela vaut la peine.
Mon conseil avisé : vous devriez vous soucier de la clarté du code, pas des performances. Lequel vous semble le plus logique lorsque vous le lisez dans le contexte du programme ? En règle générale, une seule extraction d'une référence de document est plus courte et plus facile à lire, et il n'est pas nécessaire d'examiner un ensemble de résultats de document lorsque vous n'attendez qu'un seul document, mais votre opinion peut varier.