什么是多键索引?

时间:2013-02-13 01:03:49

标签: sql ruby-on-rails

add_index :microposts, [:user_id, :created_at]

我正在阅读Michael Hartl的轨道教程并发现他正在使用一种名为多键索引的东西。我知道这意味着Active Record同时使用两个键,但我不确定使用多个键索引的优点和缺点是什么。

如果有人能给出答案我会非常感激。

2 个答案:

答案 0 :(得分:15)

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

当您的查询包含多个列的条件时,多列索引可以提供帮助。

例如:

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

答案 1 :(得分:0)

通常,搜索键可以包含多个属性,我们称之为compsite键或多个键。

举个例子,考虑一下大学关系的指数。这里是复合搜索键(course_id,year_of_enroll)。这样的索引有助于找到所有具有特定课程ID的学生,特别是他们已经入读大学的年份。 该索引搜索过程将精确地确定我们所需的记录。