我担心我的Rails项目控制器中这一行的效率
posts_list = Post.where(:title => params[:title])
如果数据库中“帖子”的数量增加,那么该行的执行速度会变慢吗?有没有可能的优化?
答案 0 :(得分:5)
它只是触发此查询,
select * from posts where title = params[:title]
您可以为迁移文件中的标题列编制索引
add_index(:posts, :title)
答案 1 :(得分: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
这一切都是为了应用增强