【问题标题】:What is a multiple key index?什么是多键索引?
【发布时间】:2013-02-13 01:03:48
【问题描述】:
add_index :microposts, [:user_id, :created_at]

我正在浏览 Michael Hartl 的 railstutorial 并注意到他正在使用一种称为多键索引的东西。我知道这意味着 Active Record 同时使用两个键,但我不太确定使用多个键索引的优缺点是什么。

如果有人能给出答案,我将不胜感激。

【问题讨论】:

    标签: sql ruby-on-rails


    【解决方案1】:

    任何索引都可以通过允许查询缩小要检查的行集来带来好处。

    当您的查询包含多个列的条件时,多列索引会有所帮助。

    例如:

    SELECT * FROM Mytable WHERE user_id = 123 AND created_at > '2013-02-01'
    

    多列索引缩小到与 user_id 123 关联的行的子集,然后在该子集中,它进一步缩小选择范围为具有最近 created_at 值的那些。

    如果索引中没有第二列,RDBMS 必须将 所有 user_id 123 的行加载到内存中,然后才能确定它们是否通过条件。

    有关更多信息,请参阅我的演示文稿How to Design Indexes, Really

    【讨论】:

    • 非常感谢!我一定会看看你的演示文稿。
    • 感谢您的演示链接!
    【解决方案2】:

    一般来说,搜索键可以有多个属性,我们称之为复合键或多键。

    例如,考虑一个关于大学关系的索引。这里复合搜索键(course_id,year_of_enroll)。这样的索引将有助于找到所有具有特定课程 ID 的学生以及他们在大学注册的特定年份。 这个索引搜索过程将精确地确定我们想要的相关记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-21
      • 2020-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-15
      相关资源
      最近更新 更多