【问题标题】:Rails migrations indexingRails 迁移索引
【发布时间】:2015-03-01 04:52:48
【问题描述】:

这两种添加索引的方法有什么区别:

add_index :juice_ingredients, %i(juice_id ingredient_id)

和:

add_index :juice_ingredients, :juice_id
add_index :juice_ingredients, :ingredient_id

此外,我需要显式创建连接表还是只需 add_reference 就足够了?

【问题讨论】:

    标签: ruby-on-rails rails-activerecord database-migration rails-migrations


    【解决方案1】:

    第一个将在两列上创建一个索引。第二个将创建两个索引,每个索引都在自己的列上。哪个更好取决于您的应用程序、数据库和您运行的查询。弄清楚你需要阅读哪些数据库的“查询优化”。

    【讨论】:

    • 这两个索引有什么区别?
    【解决方案2】:

    不同的是,第一条语句创建了一个多列索引(也叫复合索引),第二条语句创建了两个单列索引。

    这两个版本都导致列 :juice_id:ingredient_id 在数据库级别被索引。但是,它们的行为略有不同。

    为了更好地理解如何使用,您需要了解什么是数据库索引以及可以将其用于什么用途。

    如果您可能在同一查询中使用两列查询数据库,则建议使用复合索引。此外,您可以使用具有唯一约束的索引来确保不会为特定键或键组合创建重复记录。

    这里还有一些文章:

    【讨论】:

      猜你喜欢
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      • 2013-09-13
      • 2016-12-02
      • 2018-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多