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 回答