@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 поля, то второй вариант лучше, так как в первом вы перешлете на клиент всю коллекцию.

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

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

Войти через центр авторизации
Похожие вопросы