【发布时间】:2021-04-20 22:42:58
【问题描述】:
我正在尝试查询具有 180k 文档的云 Firestore 中的数据集,但过程非常长(70 秒),为了避免这种情况,我应该将我的集合拆分为子集合还是有更多的有效率吗?
查询功能
Future getProfList(String uni, String department, bool asynCall) async {
List<Academician> academicianList = [];
await FirebaseFirestore.instance
.collection('academicians')
.where('university', isEqualTo: academicianFilter(uni))
.where(stringCorrector('field'), isEqualTo: academicianFilter(department))
.get()
.then((value) => value.docs.forEach((element) {
academicianList.add(Academician.fromJson(element));
}));
asynCall = false;
return academicianList;
}
官方文档
根据https://firebase.googleblog.com/2017/10/introducing-cloud-firestore.html 我的数据集在这里应该没有问题,我的结果集主要是 50-100 个文档。
使用集合和文档来构建和查询数据。这个数据 模型对于许多开发人员来说是熟悉且直观的。它还允许 用于表达性查询。查询随结果的大小而变化 集,而不是数据集的大小,因此您将获得相同的性能 从一组 100 个或 100,000,000 个中提取 1 个结果。
【问题讨论】:
-
应该不需要拆分集合。您是否有机会添加来自运行查询的同一设备的数据?
-
是的,我今天早上添加了文档并尝试从同一设备运行查询
标签: database firebase flutter google-cloud-firestore database-design