如何添加索引,并重新索引到现有属性?

时间:2013-02-05 14:21:57

标签: ruby-on-rails ruby-on-rails-3 indexing

我正在通过代码获取记录,就像这些

一样
@community = Community.find_by_community_name(params[:community_name])
@user = User.find_by_username(params[:username])

我想加快加载速度,所以我正在考虑为它们添加索引。
如果我rake db:migrate,它是否也重新索引到现有记录? 或者只是从现在开始创建的记录?
通过像这样添加索引来提高加载速度吗?

class AddIndexToCommunity < ActiveRecord::Migration
  def self.up
    add_index :communities, [:community_name, :title, :body], :name=>:communities_idx
  end

  def self.down
    remove_index :communities, [:community_name, :title, :body], :name=>:communities_idx
  end
end



class AddIndexToUser < ActiveRecord::Migration
  def self.up
    add_index :users, [:username, :nickname, :body], :name=>:users_idx
  end

  def self.down
    remove_index :users, [:username, :nickname, :body], :name=>:users_idx
  end
end

1 个答案:

答案 0 :(得分:3)

rake db:migrate将执行数据库迁移并立即应用indeces。您应该仅对您在搜索中使用的列应用indeces。请记住,indeces会在insertupdate操作中增加时间惩罚。如果您使用names加载记录,请仅将{<1}}

添加到<{1}}:

names