Jednym z najpowszechniejszych typów migracji jest migracja „dodaj indeks”. Indeksy służą do przyspieszenia wykonywania niektórych typów zapytań poprzez utworzenie osobnej struktury danych, w której przechowywane są wartości z określonej kolumny lub zestawu kolumn wraz ze wskaźnikiem do odpowiedniego wiersza w tabeli. Dzięki temu baza danych może szybko znaleźć wiersze spełniające kryteria zapytania, zamiast przeszukiwać całą tabelę.
Aby dodać indeks do tabeli w Railsach, musisz utworzyć nowy plik migracji. Można to zrobić za pomocą polecenia rails generate migration
, po którym należy podać nazwę migracji i dodatkowe argumenty. Na przykład, aby dodać indeks do kolumny email
w tabeli users
, możesz uruchomić następujące polecenie:
rails generate migration add_index_to_users_email
Spowoduje to utworzenie nowego pliku migracji w katalogu db/migrate
. Wewnątrz pliku zobaczysz klasę z metodą change
. W tej metodzie zdefiniujesz instrukcje dotyczące modyfikowania schematu bazy danych.
Aby dodać indeks do kolumny email
w tabeli users
, możesz skorzystać z metody add_index
. Ta metoda przyjmuje trzy argumenty: nazwę tabeli, kolumnę lub kolumny, które mają być indeksowane, oraz wszelkie dodatkowe opcje. Na przykład:
class AddIndexToUsersEmail < ActiveRecord::Migration[7.0]
def
change
add_index :users, :email
end
end
Metoda add_index
może akceptować także dodatkowe opcje, takie jak nazwa indeksu i to, czy ma on być unikalny. Na przykład:
class AddIndexToUsersEmail < ActiveRecord::Migration[7.0]
def
change
add_index :users, :email, name: "index_users_on_email", unique: true
end
end
Po zdefiniowaniu migracji uruchamiamy ją za pomocą polecenia rails db:migrate
. Spowoduje to wykonanie instrukcji migracji i zastosowanie zmian w schemacie bazy danych.
Należy pamiętać, że na produkcji raz przeprowadzonej migracji nie można cofnąć. Jeśli później zajdzie potrzeba wprowadzenia zmian w schemacie, konieczne będzie utworzenie nowej migracji, która umożliwi cofnięcia zmiany. Dlatego też dobrym pomysłem jest dokładne przetestowanie migracji przed uruchomieniem ich w środowisku produkcyjnym.
Podsumowując, migracje Railsowe są potężnym narzędziem do modyfikowania schematu bazy danych aplikacji. Metodę tę add_index
można wykorzystać do dodania indeksów w celu poprawy wydajności zapytań, a migracje można uruchomić za pomocą polecenia rails db:migrate
. Ważne jest jednak, aby dokładnie rozważyć wpływ migracji i dokładnie je przetestować przed uruchomieniem ich w środowisku produkcyjnym.