add_index到数据模型 - Ruby on Rails教程

时间:2013-11-11 05:25:07

标签: ruby-on-rails ruby database indexing

我只是在Ruby on Rails Tutorial.org上找到了这个代码。它的 add_index 部分究竟是什么?为什么有3行呢?

    class CreateRelationships < ActiveRecord::Migration
  def change
    create_table :relationships do |t|
      t.integer :follower_id
      t.integer :followed_id

      t.timestamps
    end

    add_index :relationships, :follower_id
    add_index :relationships, :followed_id
    add_index :relationships, [:follower_id, :followed_id], unique: true
  end
end

1 个答案:

答案 0 :(得分:23)

  

数据库索引是一种提高速度的数据结构   表中的操作。可以使用一个或多个创建索引   列,为快速随机查找提供基础   有效排序访问记录。 - TutorialPoint

基本上用于加速查询的索引。

在示例中

add_index :relationships, :follower_id
add_index :relationships, :followed_id
follower_idfollowed_id列创建了

索引,这将加快查询速度,以查找follower_id OR followed_id。它不会对您的列强制执行任何其他约束,例如 UNIQUE 。所以他们可以有相同的价值

这里

add_index :relationships, [:follower_id, :followed_id], unique: true

该过程与上述相同,约束条件follower_id AND followed_id应该是不同的。如果您尝试向两个列

插入相同的值,则会引发错误