Мой документ выглядит следующим образом:
{
"date": "1970-02-19",
“uid”: 2345
“profile": [
"Profile Text, Profile Text, Profile Text, Profile Text, Profile Text",
"Profile Text, Profile Text, Profile Text, Profile Text, Profile Text",
"Profile Text, Profile Text, Profile Text, Profile Text, Profile Text"
],
“channel_a”: {
"reach": 915157,
"likes": 6.39,
"shares": 8.15,
"followergrowth": 6.89
},
“channel_b”: {
"reach": 894888,
"response": 8.64,
"influence": 7.03,
"reject": 5.09
},
“channel_c” {
"reach": 396938
}
}
Ключ документа состоит из типа документа, идентификатора пользователя (число) и даты.например, каналы: 9999: 2015-12-31.Я хочу создать запрос, чтобы получить список из 10 лучших пользователей, которые имеют самый высокий уровень вовлеченности для определенного канала в данный календарный месяц.Критерии могут различаться в зависимости от канала и требований.
В приведенном выше плане запроса используется сканирование основного индекса, выполнение которого заняло почти минуту.Квалифицированный набор данных составляет около 1,3 тыс. Строк, но это может увеличиться до 5 тыс. Строк.Есть ли какой-нибудь механизм на Couchbase, который я могу использовать для повышения производительности?Кроме того, я ищу масштабируемое решение по мере увеличения размера данных.
select
s. uid,
sum(s.channel_c.reach) channel_c_Reach,
sum(s.channel_b.reach) channel_b_Reach,
sum(s.channel_a.likes) channel_a_Likes
FROM channels s
where meta().id like ‘channels:%:2016-05-%’
group by s.uid
ORDER BY sum(s.channel_a.likes) DESC
LIMIT 10