Я пытаюсь оптимизировать запрос mongodb. У меня есть индекс на from_account_id
, to_account_id
и created_at
. Но следующий запрос выполняет полное сканирование коллекции.
{
"ts": {
"$date": "2012-03-18T20:29:27.038Z"
},
"op": "query",
"ns": "heroku_app2281692.transactions",
"query": {
"$query": {
"$or": [
{
"from_account_id": {
"$oid": "4f55968921fcaf0001000005"
}
},
{
"to_account_id": {
"$oid": "4f55968921fcaf0001000005"
}
}
]
},
"$orderby": {
"created_at": -1
}
},
"ntoreturn": 25,
"nscanned": 2643718,
"responseLength": 20,
"millis": 10499,
"client": "10.64.141.77",
"user": "heroku_app2281692"
}
Если я не выполняю or
, а только запрашиваю from_account_id
или to_account_id
с заказом, это быстро.
Какой лучший способ получить желаемый эффект? Должен ли я хранить account_ids (как от и до) в одном поле, как массив? Или, возможно, есть лучший способ. Спасибо!