Koleksi dokumen saya mempunyai id (sudah tentu), tetapi juga mempunyai medan yang memegang id yang sama. Soalan: Adakah lebih cepat untuk mendapatkan semula dokumen ini dengan id
collection.doc(id).get().then(....)
atau melalui pertanyaan
collection.where('id', '==', id).get().then(...)
Saya baru sahaja memfaktorkan semula kod fungsi saya. Saya pernah menggunakan pertanyaan, tetapi sekarang saya terus menggunakan id dokumen dalam koleksi. Tetapi tanggapan saya ialah pendekatan langsung ini mengambil masa yang lebih lama. Saya hanya tertanya-tanya adakah ini hanya kesan...
Secara teorinya, tiada perbezaan prestasi antara keduanya. Skala pertanyaan Firestore dengan bilangan dokumen yang dikembalikan oleh pertanyaan. Jika kedua-dua pertanyaan mengembalikan 1 dokumen, maka mereka harus melakukan operasi yang sama. Mereka pada asasnya menggunakan indeks untuk mencari nilai unik.
Lihat: Skala pertanyaan dengan saiz set hasil, bukan saiz set data
Jika anda benar-benar ingin menanda aras mikro ini, anda harus melakukan ujian anda sendiri untuk mengetahui yang mana lebih pantas. Tetapi saya fikir anda akan menghabiskan banyak masa untuk mengoptimumkan sesuatu yang tidak perlu dioptimumkan. Anda boleh memutuskan sendiri sama ada ini berbaloi dengan masa anda.
Nasihat pendapat saya: anda harus bimbang tentang kejelasan kod, bukan prestasi. Yang manakah lebih masuk akal kepada anda apabila anda membacanya dalam konteks program? Secara amnya, satu pengambilan rujukan dokumen adalah lebih pendek dan lebih mudah dibaca, dan tidak perlu melihat set hasil dokumen apabila anda hanya menjangkakan satu dokumen, tetapi pendapat anda mungkin berbeza-beza.