@tac

Оптимизирует ли Mongo select-запросы?

Допустим есть два запроса SQL

select * from users
и
select username, email from users

Как я понимаю им соответствуют

> db.users.find();
и
> db.users.find( { }, { username: 1, email: 1 } );

Вопрос: оптимизирует ли Mongo эти запросы? Есть ли ему разница по времени для этих запросов?
  • Вопрос задан
  • 3011 просмотров
Пригласить эксперта
Ответы на вопрос 3
CrazySquirrel
@CrazySquirrel
Полная выборка
{
	"cursor" : "BasicCursor",
	"nscanned" : 1136854,
	"nscannedObjects" : 1136854,
	"n" : 1136854,
	"millis" : 45205,
	"nYields" : 0,
	"nChunkSkips" : 0,
	"isMultiKey" : false,
	"indexOnly" : false,
	"indexBounds" : {
		
	}
}



Выборка одного поля
{
	"cursor" : "BasicCursor",
	"nscanned" : 1136854,
	"nscannedObjects" : 1136854,
	"n" : 1136854,
	"millis" : 40294,
	"nYields" : 0,
	"nChunkSkips" : 0,
	"isMultiKey" : false,
	"indexOnly" : false,
	"indexBounds" : {
		
	}
}


Реальный профит будет, если будет выбираться только поля в индексе.
Ответ написан
taliban
@taliban
php программист
вы банально можете выполнить кучу таких запросов и засечь время =) визуально увидите разницу, заодно и тут раскажите.
Ответ написан
@egorinsk
Если вам нужно только 2 поля, то второй вариант лучше, так как в первом вы перешлете на клиент всю коллекцию.

Не думаю, что монго что-то оптимизирует, так как тут оптимизировать нечего — в обоих случаях надо обойти всю коллекцию, просто во втором при мере меньше пересылемый объем данных.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы