2014-02-14 22 views
0

在一个新的轨道项目中,我成功配置的has_many工作几个小时之后的话题进一步阅读后,下面的迁移直通协会现在“has_many:thru”连接表真的需要索引ID列吗?

class CreateEdits < ActiveRecord::Migration 
    def change 
    create_table :edits do |t| 
     t.references :user 
     t.references :post 
     t.string :action 
     t.text :summary 
     t.timestamps 
    end 
    end 
end 

发现,显然我应该补充

add_index :edits, [:user_id, :post_id], unique: true 

但是这个主题的导轨指南没有提到索引这些列的需求。因此,我想知道是否真的需要我创建一个新的迁移来添加这样的索引。我是整个导轨和编码领域的新手,所以我很想知道这在生产环境中是否至关重要,至于我是否习惯了最佳做法。

在此先感谢。

回答

0

基本上没有必要索引任何列。你的Rails应用程序本身不需要它们。但是,它们(通常)对于您的数据库执行良好而言是必需的。

你通常在Rails中从一开始就在索引你所有的{...} _ id列,因为这些列将用于查询关联。

最后,您必须根据应用程序查询数据的方式以及关键列来微调数据库索引。请记住,添加到许多索引可能会减慢数据库的速度。请参阅Rails 3 Databases Indexes And Other Optimization