Тема: MongoDB
Показать сообщение отдельно
Старый 18.06.2013, 16:26   #4
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: MongoDB

Для оптимизации, проиндексируй collection по experience полю.
Далее в запросе можешь фильтровать:
db.characters.update({ experience: { $gt: 0 } }, { $set: { experience: 0 } }, { multi: true }); 
Таким образом будут пролистываться только те документы, которые имеют какой либо опыт.
Для того чтобы убедиться в индексе, пропиши:
db.characters.find({ experience: { $gt: 0 } }).explain(); 
Должен указать какой индекс использовал, и сколько объектов пролистал (nscanned).


Далее попробуй так:
db.characters.find({ experience: { $gt: 0 } }).hint({ $natural: 1 }).explain(); 
Используя .hint({ $natural: 1 }) query проигнорирует какие либо индексы, и покажет данные запроса без индексации, разница должна быть на лицо.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (18.06.2013)