У меня в коллекции более 135 миллионов документов. Поиск очень медленный, поэтому я пытаюсь создать правильные индексы.
Предположим, в документе есть поля:
id
, from
, to
, blockNumber
, amount
.
Мне нужен запрос по полям from
, to
, а все результаты отсортированы в порядке убывания по blockNumber
.
ModelName.find({
$or: [
{ 'from': accountName },
{ 'to': accountName }
]},
null,
{
skip: skip,
limit: limit,
sort: { blockNumber: -1 }
})
Я создал 3 разных индекса.
- с_1 (по возрастанию)
- до_1 (по возрастанию)
- blockNumber_-1 (по убыванию)
Если я делаю запрос без сортировки, то он выполняется быстро, но если я добавляю сортировку, запрос выполняется более 2 минут.
Как правильно создать индексы, чтобы запрос выполнялся быстро вместе с сортировкой?
Может быть, мне нужно создать один индекс с тремя полями одновременно (from
, to
и blockNumber
)?