javascript - 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);
})
}
`
我希望控制台上会出现一个错误,要求我创建索引,但我什么也没得到,而且查询工作得很好。
解决方案
由于您在查询中仅使用等式,因此 Firestore 可以根据自动生成的单字段索引执行zig-zag-merge-join 。
您可以在字段组合上添加索引,这通常会加快查询速度,但这不是必需的。
要了解有关此内容的更多信息,请查看Cloud Firestore 中的查询如何工作?在了解 Cloud Firestore系列中。
推荐阅读
- excel - 从以下公式中排除星期日
- node.js - 当我使用 brew info 节点时,为什么我会在节点的一些依赖项旁边看到一个“x”刻度线?
- nuxt.js - 错误 400:Nuxt.js 中的 redirect_uri_mismatch
- email - 当有人在地理围栏外时如何发送邮件
- android - 当我单击一个按钮时,需要时间来打开其他活动我如何解决这个问题
- javascript - 在 express.js 中设置默认路径
- c - 函数及其在 main 之外的定义不起作用
- angular - Angular未进入自定义表单验证
- python - 在 Firefox 机器人框架上接受 facebook cookie
- javascript - 使用参数回调函数