3

このようなコードでレコードを取得しています

@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
4

1 に答える 1

3

rake db:migrateはデータベースの移行を実行し、すぐにインデックスを適用します。検索で使用する列にのみインデックスを適用する必要があります。insertインデックスは、操作に時間のペナルティを追加することに注意してくださいupdate。レコードを にロードする場合はnames、 にのみインデックスを追加しnamesます。

class AddIndexToCommunity < ActiveRecord::Migration
  def self.up
    add_index :communities, :community_name
  end

  def self.down
    remove_index :communities, :community_name
  end
end



class AddIndexToUser < ActiveRecord::Migration
  def self.up
    add_index :users, :username
  end

  def self.down
    remove_index :users, :username
  end
end
于 2013-02-05T14:33:29.377 に答える