Ruby on rails where子句的效率
我担心我的Rails项目控制器中这条线路的效率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
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]}%”)这样的东西来提供更多的灵活性。@jdoelike
如何提供更多的灵活性?params[:title]
可以有ruby
,你甚至可以在标题中找到Post
s和ruby-on-rails
,而不仅仅是ruby
。这是对的——这是一个精确的匹配查找,所以速度会非常快。数据库很可能通过对标题进行散列并存储(短)散列来实现索引,从而减少字符串比较周期,但这对您来说应该是透明的。在你搜索数百万条记录之前,我不会担心这种查找。
add_index(:posts, :title)