Firestore中.where()与.doc()的数据库读取次数差异
Firebase Firestore 两种读取方式的读取次数差异
结论:两种方式的读取次数不一定相同,分以下场景说明:
当目标文档存在时:
- 使用
collection('users').doc(widget.uid).get()直接获取文档,读取次数为1次 - 使用
collection('users').where('uid', isEqualTo, widget.uid).get()查询,若uid字段是唯一值(通常用户ID都是唯一的),查询返回1个匹配文档,读取次数也为1次,此时两者次数相同
- 使用
当目标文档不存在时:
- 直接调用
doc(widget.uid).get():Firestore需要验证该文档是否存在,会消耗1次读取次数 - 使用where查询:由于没有匹配的文档返回,不会产生读取次数(0次),此时两者次数不同
- 直接调用
额外补充:
- 直接通过文档ID获取文档不需要任何索引,而where查询需要
uid字段存在对应的索引(开发环境下Firestore会自动给出创建索引的提示) - 如果
uid字段不是唯一值,where查询可能返回多个文档,此时读取次数等于返回的文档数量,和直接获取单个文档的1次读取完全不同
内容的提问来源于stack exchange,提问作者Mateus Neves
相关产品推荐
相关产品推荐

