Я просматриваю логи Монго, чтобы добавить индексы для моих неиндексированных запросов. По умолчанию mongo регистрирует только запросы, выполнение которых занимает более 100 мс.
Я обнаружил, что у меня есть несколько ключей _wperm и _rperm. Я вижу, что так ACL ломается. Но какой тип вызова Parse.Query может создать такой запрос в журналах?
query: { orderby: {}, $query: { _rperm: { $in: [ null, "*", "[UserId]" ] } } }
Я даже замечаю, что этот запрос относится к классу, который имеет всего 8 объектов, но для его завершения требуется 133 мс, что кажется очень медленным для такого маленького класса, даже если он должен был выполнить сортировку в памяти и сканирования.
Должен ли я решить эту проблему на уровне кода, изменив свой запрос, чтобы избежать этого типа запроса монго? Или я должен добавить индекс для этих типов запросов?
Я заметил, что у меня также есть несколько, которые появляются во вкладке Slow Queries на mLab Запрос выглядит как {"_id":"<val>","_wperm":{"$in":["<vals>"]}}
, с предложенным индексом {"_id": 1, "_wperm": 1}
, но имеет следующее примечание:
"_ id" находится в существующем уникальном индексе {"_id": 1}. Следующая рекомендация по индексам должна быть необходима только при определенных обстоятельствах.
Тем не менее, это один из моих более медленных запросов, выполнение которого занимает 320 мс. Это в классе _User. Это потому, что в классе _User много строк? Поскольку _id является уникальным, я чувствую, что добавление индекса _wperm на самом деле не должно иметь никакого значения, поскольку в итоге я получаю только один объект.
Мне любопытно, получу ли я выгоду от принятия мер по этим запросам или если мне следует безопасно их игнорировать.