Firestore не запрашивает создание индексов, но запрос работает - PullRequest
1 голос
/ 06 апреля 2019

Я выполняю сложный запрос, основанный на четырех полях: идентификатор сотрудника, год, месяц и день. Запрос работает, но меня не просят создавать индексы. Это нормально, если я оставлю это так?

Я попытался удалить некоторые поля, например, запрашивая только идентификатор сотрудника и год посещения, и он все еще работает нормально. Я не получаю никаких предупреждений на консоли.

`

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);
        })
}

`

Я ожидаю, что на консоли появится ошибка с запросом на создание индексов, но я не получаю ни одного, и запрос работает просто отлично.

1 Ответ

2 голосов
/ 06 апреля 2019

Поскольку в вашем запросе используются только равенства, Firestore может выполнить zig-zag-merge-join на основе автоматически сгенерированных индексов для одного поля.

You может добавить индекс для комбинации полей, что обычно немного ускоряет запрос, но в этом нет необходимости.

Чтобы узнать больше об этом, посмотрите Какзапросы работают в Cloud Firestore? в серии Знакомство с Cloud Firestore .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...