Я запускаю Ruby on Rails 3.1. Я запрашивая базу данных для того, чтобы восстановить объекты статьи, которые имеют не категории отношений с пользователем и я пытаюсь улучшить следующий код:Как улучшить следующий запрос к базе данных?
article_relationship_ids =
User.article_category_relationships
.uniq_by{|article_category_relationship| article_category_relationship.article_id}
.map(&:article_id)
user.articles.where("articles.id NOT IN (?)", article_relationship_ids)
Как я могу улучшить приведенный выше код?
P.S.: Является ли мой «подход поиска» «логически» правильным, чтобы сделать то, что я хотел бы?
Что случилось с ним? Почему вы хотите улучшить? –
@ Сергио Туленцев - Я уверен, что есть что улучшить, в основном по соображениям производительности. Например, метод 'uniq_by' запускается после выполнения запроса и, возможно, есть способ сделать это на« уровне базы данных », чтобы загрузить меньше записей ... * как? * – Backo
Как правило, плохая идея явно оптимизируйте производительность, не зная, как данный код действительно выполняет. Запустите фактические тесты, и если код на самом деле является узким местом, то оптимизируйте. –