Mongodb - Увеличивает ли проекция время выполнения? - PullRequest
0 голосов
/ 12 апреля 2019

Допустим, в моем документе 50 полей.

Когда я использую проекцию и просто выбираю 4 поля, мое время выполнения увеличивается или уменьшается?

Как mongodb справляется с этим?

  1. Получает ли mongodb документ, затем фильтрует поля и возвращает?
  2. Получает ли mongodb выделенные поля вместо всего документа и возвращает?
  3. Работает ли он по-разному для find и aggregate?

Я считаю, что 1-й вариант увеличит время выполнения, а 2-й вариант уменьшит его.

1 Ответ

0 голосов
/ 12 апреля 2019

ну, все зависит, я думаю ... зависит от ваших критериев поиска. По моему мнению, это может быть только пункт 1 (или он должен быть сильно оптимизирован), поскольку любая фильтрация или агрегация или что-то еще может быть в полях, которые не находятся в проекции. и кстати .... определить "выборка". извлекать клиенту, я бы сказал нет, «извлекать» на сервере да. В целом, я бы сказал, что если ваши запросы не так сложны, даже если проекция занимает некоторое дополнительное время, она будет сбалансирована с общим временем передачи данных клиенту. В целом, мы говорим здесь миллисекунды, и общее время передачи и задержки сложнее преодолеть, чем оптимизацию запросов к БД.

Кроме того, я обнаружил следующее (более техническое, чем мое мнение): https://dba.stackexchange.com/questions/198444/how-mongodb-projection-affects-performance

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