【问题标题】:Do "has_many :thru" join tables really need indexed id columns?“has_many :thru”连接表真的需要索引 id 列吗?
【发布时间】:2014-03-13 16:08:03
【问题描述】:

在一个新的 Rails 项目中工作了几个小时后,我成功配置了一个 has_many :thru 与以下迁移的关联

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

但是关于这个主题的 rails 指南没有提到需要索引这些列。所以我想知道我是否真的需要创建一个新的迁移来添加这样的索引。我是整个 Rails 和编码方面的新手,所以我很想知道这在生产环境中是否必不可少,以使我在此过程中习惯于最佳实践。

提前致谢。

【问题讨论】:

    标签: ruby-on-rails-3.2 database-migration


    【解决方案1】:

    基本上不需要索引任何列。您的 Rails 应用程序本身不需要它们。但是,它们(通常)是您的数据库正常运行所必需的。

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

    最后,您必须根据应用程序查询数据的方式和关键列来微调数据库索引。请记住,添加到多个索引会降低您的数据库速度。

    另见Rails 3 Databases Indexes And Other Optimization

    【讨论】:

      猜你喜欢
      • 2011-12-07
      • 1970-01-01
      • 2013-08-07
      • 2011-06-11
      • 2011-01-04
      • 1970-01-01
      • 2012-02-11
      • 1970-01-01
      • 2018-09-29
      相关资源
      最近更新 更多