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

Performance Firestore查询的实时更新速度非常慢,performance,firebase,flutter,google-cloud-firestore,query-performance,Performance,Firebase,Flutter,Google Cloud Firestore,Query Performance,我正在一个小型测试数据库上运行一个简单查询,这是我的查询: \u firestore.collection('chats')) .where('users',arrayContains:userId) .orderBy('sentDate',降序:true) .快照(); 我的数据库位于Cloud Firestore位置southamerica-east1,看起来是这样的(出于安全原因,模糊了一些数据): 我正在使用Firestore插件在Android上运行flifter,因此下面的平台将

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

\u firestore.collection('chats'))
.where('users',arrayContains:userId)
.orderBy('sentDate',降序:true)
.快照();
我的数据库位于Cloud Firestore位置southamerica-east1,看起来是这样的(出于安全原因,模糊了一些数据):

我正在使用Firestore插件在Android上运行flifter,因此下面的平台将是Android

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

数据库非常小,包含的项目不超过15项

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


我没有在这个查询上运行任何代码,我只是使用一个简单的DTO和非常快速的UI代码获取它并显示其结果,如果我删除
where
子句,我会立即显示所有15个文档。我的延迟很好,我有一个强大的互联网连接,一切都是惊人的快,直到我只添加了这个简单的
,其中
行,一切都停止工作。

Firestore在缺少索引时提供错误消息,并带有创建索引的链接

我面临的问题是错误消息在Logcat输出中打印,而对于Flatter,我们使用调试控制台,因此错误消息根本没有出现,我认为我的idex很好

我已经为Cloud Firestore Flatter团队提交了一个bug,这样他们至少可以更新入门文档,并指出任何缺少索引的错误都将打印在Logcat上(至少对于Android)


PS:我仍然没有测试查询本身,因为索引仍在构建中。我必须指出,即使Firestore控制台显示已构建并准备就绪,我也会收到错误消息,说我必须等到它们完成构建。

答案是“否”,这不正常。但是,如果您真的想问如何改善延迟,您应该编辑问题,以提供有关如何使用查询结果、如何进行基准测试以及如何补偿您与Firestore之间可能存在的网络质量差的更多详细信息。好的,我想我需要更新我的问题then@DougStevenson我试图提供更多信息,但说真的,在我的应用程序上,没有运行任何代码或其他任何东西,
where
行决定了工作与不工作。@DougStevenson我修复了它,谢谢你的帮助!我打算用“因为使用where和arrayContains,它很可能需要索引,查看调试/输出日志以查看Firestore推荐和索引制作链接”来回答这个问题,但是你自己做到了,好东西!是的,我被愚弄了两次:一次是当查询确实有效但很慢时,还有两次是当错误记录在Logcat上隐藏的地方时。。。但我们开发人员很强大,不要让这些陷阱拖累我们:P