Michael Hartl Rails教程 - 第11章 - 清单11.1

时间:2013-11-07 17:19:53

标签: ruby-on-rails

我正在使用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(输入)和follow_id(输出)。听起来这就是将用户(x)连接到用户(y)所需的全部内容,为什么需要索引。它是一个额外的列/字段吗?如果没有,那是什么。它做了什么?为什么有必要使用它?

由于

1 个答案:

答案 0 :(得分:1)

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

两个字段上的复合索引一起阻止用户两次跟踪同一个人。虽然您也应该在代码中防止这种情况,但在数据库中复制唯一性验证并不会有害,因为从历史上讲,数据库比应用程序更长。