0

我使用的是 Mac OSX 版本 10.8 和 Rails 3.2.14

这是链接: http ://ruby.railstutorial.org/chapters/following-users?version=3.2#sec-a_problem_with_the_data_model

向下滚动到清单 11.1。

问题:向关系表添加索引有什么意义?

关系表有两列follower_id(输入)和followed_id(输出)。听起来这就是将用户(x)连接到用户(y)所需的全部内容,为什么需要索引。它是一个额外的列/字段吗?如果不是,那是什么。它有什么作用?为什么有必要使用它?

谢谢

4

1 回答 1

1

除非您向列添加索引,否则数据库无法直接搜索该列。相反,它必须遍历每一行,然后查看该列的值。如果我们在谈论 Excel 工作表,并且您想快速查看“M”列中的所有值,您只需将眼睛或手指放在该列上并向下滚动即可。想象一下,您必须从“A”列开始,然后向右滚动以阅读“M”列。冲洗并重复 1,000 次,如果有时间,您的查询就会增加很多。

两个字段上的复合索引一起防止用户关注同一个人两次。虽然您还应该在代码中防止这种情况,但在数据库中复制唯一性验证并没有什么坏处,因为从历史上讲,数据库比应用程序更长寿。

于 2013-11-07T17:54:08.357 回答