Firestore的查询实时更新速度非常慢

时间:2020-01-22 01:25:01

标签: performance firebase flutter google-cloud-firestore query-performance

我正在一个小型测试数据库上运行一个简单的查询,这是我的查询:

_firestore.collection('chats')
          .where('users', arrayContains: userId)
          .orderBy('sentDate', descending: true)
          .snapshots();

我的数据库位于Cloud Firestore的southamerica-east1处,它看起来像这样(出于安全原因而模糊了一些数据):

Database

我正在使用Android上的Flutter的Firestore插件,因此下划线平台将是Android。

如果删除.where('users', arrayContains: userId),查询将立即运行,并且如果更改数据库上的任何字段(例如,如果我使用Firestore控制台并将Chat 1更改为Chat 2),则更新立即出现。但是使用where子句,更新大约需要42秒才能显示。

数据库很小,没有超过15个项目。

这是正常行为吗?如果没有,我该如何解决?

我没有在此查询之上运行任何代码,我只是使用简单的DTO和非常快的UI代码来获取并显示其结果,如果删除了where子句,我将得到全部15即时显示的文档。我的等待时间很好,我拥有强大的Internet连接,一切都非常快,直到我只添加了这条简单的where行,一切都停止了工作。

1 个答案:

答案 0 :(得分:1)

当缺少索引时,Firestore会提供错误消息,并提供用于创建索引的链接。

我面临的问题是错误消息正在Logcat输出上打印,而Flutter却使用了调试控制台,因此错误消息根本没有出现,我认为我的idexe很好。

我已经向Cloud Firestore Flutter团队提交了一个错误,因此他们至少可以更新“入门”文档,并指出所有丢失的索引错误都将打印在Logcat上(至少对于Android)。

PS:由于索引仍在构建中,因此我仍然没有测试查询本身。我必须指出,即使Firestore控制台说已经构建好并准备好了,我仍然收到错误消息,说我必须等到它们完成构建。

相关问题