Firestore相同查询不同Limit的读取计数计算与分页计费疑问
Firestore分页查询的计费说明
先看你贴的这段查询代码:
_chatReference .orderBy('createdAt', descending: true) .limit(limit) .snapshots() .doOnListen(() => print('Chat stream started with limit $limit')) .doOnCancel(() => print('Chat stream cancelled for limit $limit'))
针对你的问题,直接给结论:
- 先调用limit=20的查询,再将limit增至40,总读取计数是60。这是两次完全独立的查询:第一次读取20条文档,第二次读取40条文档,Firestore会分别统计这两次的读取量,加起来就是60。
- 如果先取消limit=20的查询流,再监听limit=40的流,计费依然是60。取消流只是停止后续的实时更新监听,之前已经完成的20条读取计数不会被撤销,第二次查询还是会读取40条,总计数还是20+40=60。
顺便提一句,你这种靠增大limit的分页方式其实很费钱,更优的做法是用游标分页:第一次查20条后,记录下最后一条文档的createdAt值,第二次查询用startAfter基于这个游标来查询,这样第二次只会读取新增的20条,总计费就是40,能省一半的读取量。
内容的提问来源于stack exchange,提问作者Praveena
相关产品推荐
相关产品推荐

