Я использую MongoDB (с Mongoid), запрос, который действительно очень часто выполняется в моем приложении, я не уверен, что у меня установлены правильные индексы, чтобы сделать запросы более эффективными, вот фрагмент из моего журнала, когдазапрос выполняется:
MONGODB (33ms) recipes_development['system.namespaces'].find({})
MONGODB (6ms) recipes_development['recipes'].find({})
MONGODB (0ms) recipes_development['system.namespaces'].find({})
MONGODB (0ms) recipes_development['users'].find({:_id=>BSON::ObjectId('4f48469d4064241d860002d9')}).limit(-1).sort([[:created_at, :desc]])
MONGODB (0ms) recipes_development['users'].find({:_id=>BSON::ObjectId('4f48469d4064241d8600032a')}).limit(-1).sort([[:created_at, :desc]])
MONGODB (0ms) recipes_development['users'].find({:_id=>BSON::ObjectId('4f48469a4064241d8600008d')}).limit(-1).sort([[:created_at, :desc]])
MONGODB (0ms) recipes_development['users'].find({:_id=>BSON::ObjectId('4f48469c4064241d86000273')}).limit(-1).sort([[:created_at, :desc]])
MONGODB (0ms) recipes_development['users'].find({:_id=>BSON::ObjectId('4f48469d4064241d86000365')}).limit(-1).sort([[:created_at, :desc]])
MONGODB (0ms) recipes_development['users'].find({:_id=>BSON::ObjectId('4f4846a34064241d86000910')}).limit(-1).sort([[:created_at, :desc]])
MONGODB (0ms) recipes_development['users'].find({:_id=>BSON::ObjectId('4f48499a4064241c58000027')}).limit(-1).sort([[:created_at, :desc]])
MONGODB (0ms) recipes_development['users'].find({:_id=>BSON::ObjectId('4f48499a4064241c58000027')}).limit(-1).sort([[:created_at, :desc]])
MONGODB (0ms) recipes_development['users'].find({:_id=>BSON::ObjectId('4f48499a4064241c58000027')}).limit(-1).sort([[:created_at, :desc]])
... many more ...
Как я могу сделать это более эффективным, или поведение, которое я вижу, типично?
Обновление
Таким образом, я получаю эти записи с помощью следующих областей:
scope :active, where(:active => true)
default_scope order_by([:created_at, :desc])
Затем я устанавливаю переменную экземпляра в моем контроллере таким образом:
@users = User.active