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