Firestore集合组复合索引能否替代集合索引?求官方建议
Firestore集合组索引是否可兼容单集合查询?
这是Firestore的预期行为。集合组索引的作用范围覆盖整个同名集合组(包含所有层级的子集合),而单个集合本身就是集合组的组成部分,因此集合组索引自然可以被单集合的查询复用。反过来,单集合索引的作用范围仅限指定集合,无法支持跨子集合的集合组查询,所以删除集合组索引后,集合组查询会失效。
推荐方案:仅保留集合组索引(索引#2)
完全不需要保留单集合索引(索引#1),原因如下:
- 功能全覆盖:集合组索引已经满足单集合和集合组两种查询场景的需求,单集合索引属于冗余资源
- 降低成本:Firestore的索引会占用存储资源,且每次写入数据时都需要更新相关索引,冗余索引会增加不必要的存储开销和写入延迟
如果后续出现仅针对单个集合的特殊查询需求(比如需要不同字段组合的索引),再单独创建对应的单集合索引即可,当前场景下保留重复结构的两个索引毫无意义。
内容的提问来源于stack exchange,提问作者Khaled Sh
相关产品推荐
相关产品推荐

