Ruby on rails where子句的效率

Ruby on rails where子句的效率,ruby-on-rails,ruby-on-rails-3,performance,where,Ruby On Rails,Ruby On Rails 3,Performance,Where,我担心我的Rails项目控制器中这条线路的效率 posts_list = Post.where(:title => params[:title]) 如果数据库中的“post”数量增加,行的执行速度会变慢吗?是否存在任何可能的优化?在标题字段上添加索引可以是第一种方法: class AddIndexTitleToPost < ActiveRecord::Migration def change add_index :posts, :title, uniq: fal

我担心我的Rails项目控制器中这条线路的效率

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

如果数据库中的“post”数量增加,行的执行速度会变慢吗?是否存在任何可能的优化?

在标题字段上添加索引可以是第一种方法:

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

这一切都是为了应用程序增强

它只是触发了这个查询

select * from posts where title = params[:title]
您可以为迁移文件中的标题列编制索引

add_index(:posts, :title)

小小的人为例子:你最好使用
like
where('title like?',“%#{params[:title]}%”)这样的东西来提供更多的灵活性。@jdoe
like
如何提供更多的灵活性?
params[:title]
可以有
ruby
,你甚至可以在标题中找到
Post
s和
ruby-on-rails
,而不仅仅是
ruby
。这是对的——这是一个精确的匹配查找,所以速度会非常快。数据库很可能通过对标题进行散列并存储(短)散列来实现索引,从而减少字符串比较周期,但这对您来说应该是透明的。在你搜索数百万条记录之前,我不会担心这种查找。
add_index(:posts, :title)