2014-02-14 49 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