Railsプロジェクトのコントローラーでこのラインの効率が心配です
posts_list = Post.where(:title => params[:title])
データベース内の「投稿」の数が増えると、行の実行が遅くなりますか?可能な最適化はありますか?
Railsプロジェクトのコントローラーでこのラインの効率が心配です
posts_list = Post.where(:title => params[:title])
データベース内の「投稿」の数が増えると、行の実行が遅くなりますか?可能な最適化はありますか?
このクエリを実行するだけです。
select * from posts where title = params[:title]
移行ファイルのタイトル列にインデックスを付けることができます
add_index(:posts, :title)
タイトルフィールドにインデックスを追加することは、最初のアプローチです。
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
それはすべてアプリケーションの強化のためです