Пусть говорят, у меня есть два запроса для запуска:App Engine Datastore - Индексы оптимизация
# Q1
Chair.query(ndb.AND(Chair.type == 'A', Chair.invented_at < '2014'))
# Q2
Chair.query(ndb.AND(Chair.type == 'A', Chair.cost == 2, Chair.invented_at < '2014'))
Q1 и Q2 имеют фильтр неравенства, поэтому эти запросы требуют составных индексов.
Индекс, автоматически сгенерированный сервером разработки, будет содержать два индекса: по одному для каждого запроса.
# Index for Q1
- kind: Chair
properties:
- name: type
- name: invented_at
# Index for Q2
- kind: Chair
properties:
- name: type
- name: cost
- name: invented_at
Но не было бы более эффективным с точки зрения хранения и операции записи использовать только второй индекс (Q2) и модифицировать Q1 (это может быть возможно в некоторых случаях), поэтому он использует индекс Q2 тоже? Или проще, чтобы хранилище данных использовало меньшие, но более индексы?
Этот вопрос полностью гипотетический, мне просто интересно, как будет реагировать хранилище данных.