2011-08-21 11 views
7

Tworzę aplikację rails 3 na Heroku i używam PostgreSQL jako bazy danych. W mojej migracji rails dodałem indeksy na wszystkich kolumnach ID. Czy to był błąd? Zaczynam się zastanawiać, czy postgres ma domyślnie indeksy na kolumnach ID.Domyślne indeksy na kolumnie ID?

Jeśli to był błąd, jak to naprawić? Jeśli po prostu napiszę o migracji railsów, aby usunąć indeksy z kolumn ID, to wszystko to naprawi?

Odpowiedz

9

Według postgresql's documentation:

Adding a primary key will automatically create a unique btree index on the column 
or group of columns used in the primary key. 

Hovewer, nie uniemożliwia tworzenie innej indeks na tych samych kolumnach. Może to mieć sens, jeśli używasz różnych zasad indeksowania (np. Indeks GiST). Ale jeśli nie jesteś tego pewien, 99,9%, że właśnie stworzyłeś identyczny indeks.

W rzeczywistości nie wpłynie to w żaden sposób na funkcjonalność aplikacji. Jedyną rzeczą, której należy się obawiać, jest to, że indeksy są przebudowywane na operacjach aktualizacji, więc może to powodować pewne problemy związane z wydajnością. Tak więc, jak sugeruje instrukcja removing seldom-used indexes (ostatnie zdanie), lepiej usunąć te indeksy z db.

Nie jestem do końca zaznajomiony z migracjami RoR, ale uważam, że migracja, która usuwa te indeksy, jest wystarczająca.

+0

Jeśli uruchomię zapytanie, aby usunąć indeks z identyfikatora, usunie "oba"? – Brand

+0

Nie, zapytanie o spadek indeksu powoduje zwrócenie konkretnego indeksu do zrzutu. Tak więc, drop index yada powinien spowodować, że zniknie tylko indeks o nazwie yada. –

0

Sprawdź za pomocą \ d "tablename", które indeksy są obecne w twoim stole. Wszystkie są tam wymienione, w tym te tworzone automatycznie. Jeśli znajdziesz duplikaty, łatwo jest je usunąć (upuść indeks "indexname" na "tablename"). Usuniesz tylko indeks o odpowiedniej nazwie ...

Powiązane problemy