Firestore: лучше ли работает составной индекс для запросов с несколькими предложениями where? - PullRequest
1 голос
/ 16 мая 2019

У меня есть следующий код:

foldersRef.where("ParentID", "==", "1").where("Deleted", "==", false)
  1. Будет ли составной индекс (то есть индексы ParentID и Deleted) предпочтительнее индекса из одного поля для этого запроса?
  2. Если у меня также есть отдельные индексы для одного поля для ParentID и Deleted, узнает ли Firestore об использовании составного индекса?
  3. Когда я создаю составной индекс, имеет ли значение порядок полей?
  4. Имеет ли значение порядок моих .where() предложений / вызовов функций?

Ответы [ 2 ]

1 голос
/ 20 мая 2019
  1. Будет ли составной индекс (который индексирует ParentID и Deleted) предпочтительнее, чем индекс из одного поля для этого запроса?

Если вы используете следующеестрока кода:

foldersRef.where("ParentID", "==", "1").where("Deleted", "==", false)

Без упорядочения (ASCENDING или DESCENDING) нет необходимости создавать составной индекс.Firestore создаст нужный индекс автоматически.

Если у меня также есть отдельные индексы для одного поля для ParentID и Deleted, узнает ли Firestore об использовании составного индекса?

Нет.Индексы с одним полем также создаются Fiestore автоматически.Таким образом, нет необходимости создавать какой-либо индекс для одного поля.Кроме того, если у вас есть отдельные индексы полей с упорядочением, это не означает, что у вас также есть составной индекс для этих полей.Вам нужно создать себя.

Когда я создаю составной индекс, имеет ли значение порядок полей?

Да, если вы измените порядок вызовов where(), вам также необходимо создать соответствующийиндекс соответственно.

Имеет ли значение порядок моих предложений / функций .where ()?

С точки зрения скорости, до тех пор, пока вы создаете правильный индекс, нет.

0 голосов
/ 16 мая 2019
  1. Да, для операций чтения составной индекс будет работать лучше, чем объединение индексов с одним полем. Это позволяет Cloud Firestore использовать один индекс вместо объединения нескольких индексов с одним полем.
  2. Да, Cloud Firestore будет отдавать предпочтение комбинированному индексу.
  3. (также 4.) Да, порядок полей имеет значение как в определении индекса, так и в вашем запросе. foldersRef.where("ParentID", "==", "1").where("Deleted", "==", false) и foldersRef.where("Deleted", "==", false).where("ParentID", "==", "1") потребуют двух разных составных индексов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...