我有一个可以根据多个字段进行过滤的过滤器组件。所有字段都使用相等运算符,我根据“已创建”字段进行排序。
的内容let queryBuilder = firebase.firestore()
.collection('myCollection')
.doc(docId)
.collection('myInnerCollection')
.orderBy('created', 'desc');
const {field1, field2, field3} = filter;
if (field1) {
queryBuilder = queryBuilder.where('field1', '==', field1);
}
if (field2) {
queryBuilder = queryBuilder.where('field2', '==', field2);
}
if (field3) {
queryBuilder = queryBuilder.where('field3', '==', field3);
}
对于每个字段,我都需要使用“created”字段创建复合索引。即:
index field1(+) created(-)
index field2(+) created(-)
index field3(+) created(-)
一旦我这样做,每种过滤组合都有效。所以我的问题是,如果我知道field1总是填充,我应该只创建两个复合索引:
index field1(+) field2(+) created(-)
index field1(+) field3(+) created(-)
或者3个索引也可以吗? 使用每一个是否有任何性能/存储损失?如果是这样,惩罚是什么(假设我的收藏中有100K记录)?