私は現時点で非常に大きなmysql2データベースで多くの作業をしていますが、適切なフィールドだと思ったインデックスを作成しましたが、いくつかのクエリの戻り時間は非常に遅いです。Railsデータベースのパフォーマンスチューニング
問題の原因となるモデルは、Comment
とCommenter
です。
Commenter
とComment
の間にhas_many
の関係がありますが、私のクエリは各コメントのコメント欄のユーザー名を見つけることに依存しています。だから私はこのような何かを実行します:
c = Blog.first.comments ##this bit runs fine, I indexed the "blog_id" field on Comments
c.collect {|c| c.commenter.username}
はスピードの問題を支援するために、私はコメントモデルのcommenter_id
フィールドにインデックスを作成しました。しかし、それはまだ非常に遅いです..
私は別のことができるか知っていますか?それはクエリの速度を向上させるのに役立ちますか?
私はeager_loadと考えており、アクティブなレコード関係のみの作業が含まれています。配列ではなく、私のポストでは、cは配列です。 – BananaNeil
これは実際には関係ではありません - 関係は関係です - あなたは間違いなくfiltered_ordered_comments = some_blog.comments.where(...)。order(...)などを行うことができます –