11
add_index :microposts, [:user_id, :created_at]

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

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

4

2 回答 2

16

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

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

例如:

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

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

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

有关更多信息,请参阅我的演示文稿 如何设计索引,真的

于 2013-02-13T01:15:50.363 回答
0

通常,搜索键可以具有多个属性,我们将其称为复合键或多个键。

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

于 2017-12-11T10:59:32.630 回答