ruby-on-rails - 应该为 Ruby on Rails 中的多态关联添加哪些索引?

标签 ruby-on-rails database-design

我在 Ruby on Rails 模型中有一个多态关联。在迁移中,我有:

create_table "offer_defs" do |t|
  t.integer "product_def_id"
  t.string  "product_def_type"
  ...
end

我想为这个关联添加一个索引。我在以下选项之间犹豫:
add_index :offer_defs, [:product_def_id, :product_def_type]


add_index :offer_defs, :product_def_id
add_index :offer_defs, :product_def_type

也许两者都有?

优缺点都有什么?

最佳答案

我会选择后一种。如果您需要计算特定类型的多态附件(您可能会这样做),它会有所帮助。如果您想要多列索引,我至少会交换两列的顺序(将类型放在第一位),因为该类型字段比 id 字段更有可能是该表上的查询参数。

注意:我假设您在这里使用的是 mysql,如果您使用的是不同的数据库,我的建议可能应该被忽略,或者至少应该检查一下。

关于ruby-on-rails - 应该为 Ruby on Rails 中的多态关联添加哪些索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/306517/

相关文章:

mysql - 来自多个表链接的 SQL 最佳实践

mysql - 多对多表 - 1 个单独的字段主键或 2 个已存在的字段主键(内部示例)

java - Hibernate的table-per-subclass继承策略的效率

ruby-on-rails - POST 请求在 Heroku 环境中被视为 GET

ruby-on-rails - rails 3 : How to format a Date in other than English languages?

ruby-on-rails - 当文件存在时,如何更改 simple_form 中文件字段的名称?

sql - 关于 MySQL 中有效表使用的问题

数据库、表和列命名约定?

ruby-on-rails - 如何在 Rspec 中正确地进行字符串连接?

mysql - 如何在mySQL搜索中搜索独立的单词?