查询的Firestore实时更新非常慢

问题描述 投票:0回答:1

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

_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行,一切就停止了。

performance firebase flutter google-cloud-firestore query-performance
1个回答
0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.