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.:自分の「検索方法」は、「論理的に」正しいと思いますか?
それで何が悪いのでしょうか?なぜあなたは改善したいのですか? –
@Sergio Tulentsev - パフォーマンス上の理由から、改善の余地があると確信しています。例えば、クエリが実行された後に 'uniq_by'メソッドが実行され、それが"データベースレベル "になってレコードを少なくロードする方法があるかもしれません... *どのように?* – Backo
一般的に明示的には悪い考えです与えられたコードが実際にどのように実行されているかを知らないときのパフォーマンスを最適化します。実際のベンチマークを実行し、コードが実際にボトルネックになっている場合は、最適化します。 –