Оптимизация запросов Couchbase N1ql для диапазона дат

#couchbase #n1ql

#couchbase #n1ql

Вопрос:

Я использую версию сообщества couchbase 6.0, и у меня около 20 миллионов записей, и я пытаюсь выполнить следующий запрос,

 SELECT SUM(sales) as sales, SUM(salesWithOutTax) as salesWithOutTax FROM `someBucket` where weekStartDate >= 1583087400 AND weekEndDate <= 1598725800
  

Здесь начальные и конечные даты представляют собой эпоху с диапазоном в 1 год

Я создал следующий индекс:

 CREATE INDEX `dates_salesValues` ON `someBucket`(`weekStartDate`,`weekEndDate`,`sales`,`salesWithOutTax`)
  

Для возврата ответа запросу требуется около 1 минуты. Хотел узнать, как я могу улучшить индекс или способ выполнения запроса. Или, если есть какой-либо другой лучший способ выполнения запросов поиска по диапазону.

Комментарии:

1. По мнению советника по индексу, это хороший индекс. Какую версию сервера Couchbase вы используете? Сколько записей обычно возвращается? Каков вариант использования?

2. Версия сообщества Couchbase 6.0. Имеется 20 миллионов записей. Что я хочу сделать, так это агрегировать атрибуты sales, salesWithOutTax по всем документам в течение 1 года и возвращать агрегированные результаты следующим образом: ВЫБЕРИТЕ SUM (sales) как sales, SUM(salesWithOutTax) как salesWithOutTax ИЗ someBucket где weekStartDate >= 1583087400 И weekEndDate <= 1598725800

3. К сожалению, прямого ответа на этот вопрос нет (если мы не получим базу данных и не попробуем некоторые варианты). Но я думаю, что частичный индекс ( docs.couchbase.com/server/current/learn/services-and-indexes / … ) должно помочь вашему делу.