Add_index для модели данных - Учебник Ruby on Rails

Я просто немного зациклен на этом коде, найденном в 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

Индекс базы данных - это структура данных, которая улучшает скорость операции в таблице. Индексы могут быть созданы с использованием одного или нескольких столбцов, обеспечивая основу как для быстрого случайного поиска, так и для эффективный порядок доступа к записям. - TutorialPoint

В основном индекс используется для ускорения запроса.

В примере

add_index :relationships, :follower_id
add_index :relationships, :followed_id

создается индекс follower_id и followed_id, который ускорит запрос, ищущий follower_id ИЛИ followed_id. Он не применяет никаких других ограничений для вашего столбца, например UNIQUE. Таким образом, они могут иметь одинаковые значения

Здесь

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

процесс такой же, как и выше, с ограничением, что follower_id AND followed_id должно быть разным. Ошибка будет выбрана, если вы попытаетесь вставить идентичные значения в оба столбца