Rails效率的where子句

时间:2012-10-24 17:43:51

标签: ruby-on-rails ruby-on-rails-3 performance where

我担心我的Rails项目控制器中这一行的效率

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

如果数据库中“帖子”的数量增加,那么该行的执行速度会变慢吗?有没有可能的优化?

2 个答案:

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

这一切都是为了应用增强