MongoDB чрезвычайно низкая производительность при фильтрации или сортировке по неиндексированным полям - PullRequest
3 голосов
/ 21 октября 2019

MongoDB выполняет find() операций очень медленно, когда я sort или search на non-indexed полях. Когда в этих полях нет сортировки или поиска или эти операции выполняются над полями indexed, query выполняется очень быстро. Моя тестовая база данных содержит только 650 тыс. Документов (что не очень много), но итоговая база данных будет содержать 50 млн документов, растущих на 30 тыс. В день.

Это запрос, который выполняется быстро (менее 1 с), только фильтрацияв индексированных полях:

.find({
    tipo_doc: 'nfe', //indexed field
    id_empresa: 7 //indexed field
},
{
    sort: {'data_requisicao': -1}, //indexed field
    limit: 3000
});

И этот запрос выполняется очень медленно (30 с или более):

.find({
        tipo_doc: 'nfe', //indexed field
        id_empresa: 7, //indexed field
        'transportador.xNome': 'A commom name' //not indexed field
    },
    {
        sort: {'emitente.enderEmit.UF': -1}, //not indexed field
        limit: 3000
    });

Вот пример JSON документа: https://pastebin.com/1EeaL9VL

Я провел много исследований, но, похоже, здесь ничего не работает .. Я делаю что-то не так, чтобы получить эту низкую производительность?

РЕДАКТИРОВАТЬ:

Как я уже сказал в своем комментарии, эти данные будут отображаться в HTML table, и каждый column будет доступен для поиска и сортировки, поэтому я предполагаю, что не могу создать index для каждого столбца ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...