首页 > 解决方案 > Firestore 不要求创建索引但查询有效

问题描述

我正在执行基于四个字段的复杂查询,员工 ID、年、月和日。查询有效,但没有要求我创建索引。如果我这样离开它可以吗?

我试过删除一些字段,例如,仅按员工 ID 和出勤年份查询,它仍然可以正常工作。我在控制台上没有收到任何警报。

`

function findAttendance(employee_id, date, callback) {
    db.collection('attendance')
        .where('employee.id', '==', employee_id)
        .where('date.day', '==', date.getDate())
        .where('date.month', '==', date.getMonth())
        .where('date.year', '==', date.getFullYear())
        .get().then((snapshot) => {
            callback(snapshot);
        })
}

`

我希望控制台上会出现一个错误,要求我创建索引,但我什么也没得到,而且查询工作得很好。

标签: javascriptgoogle-cloud-firestore

解决方案


由于您在查询中仅使用等式,因此 Firestore 可以根据自动生成的单字段索引执行zig-zag-merge-join 。

可以在字段组合上添加索引,这通常会加快查询速度,但这不是必需的。

要了解有关此内容的更多信息,请查看Cloud Firestore 中的查询如何工作?了解 Cloud Firestore系列中。


推荐阅读