3

Railsプロジェクトのコントローラーでこのラインの効率が心配です

posts_list = Post.where(:title => params[:title])

データベース内の「投稿」の数が増えると、行の実行が遅くなりますか?可能な最適化はありますか?

4

2 に答える 2

5

このクエリを実行するだけです。

select * from posts where title = params[:title]

移行ファイルのタイトル列にインデックスを付けることができます

add_index(:posts, :title)
于 2012-10-24T17:50:18.957 に答える
2

タイトルフィールドにインデックスを追加することは、最初のアプローチです。

class AddIndexTitleToPost < ActiveRecord::Migration
    def change
      add_index :posts, :title, uniq: false
    end
end

また、反復でfind_eachを使用して、データベースの増大を防ぐことができます

Post.where(title: params[:title]).find_each(batch_size: 10) do |post|
    ...
end

それはすべてアプリケーションの強化のためです

于 2012-10-24T17:48:32.773 に答える