Dlaczego nie dodasz serii
kolumna klucza podstawowego do tabeli?
ALTER TABLE login ADD column login_id serial;
ALTER TABLE login ADD CONSTRAINT login_pkey PRIMARY KEY(login_id);
Pierwsza operacja spowoduje przepisanie tabeli i zablokuje na pewien czas. Następnie uruchomiłbym
VACCUM FULL ANALYZE login;
Gorsze alternatywy:row_number()
jak wskazał @Joachim
. Aby uzyskać maksymalną wydajność, możesz pozostawić OVER
klauzula pusta:
row_number() OVER () AS rn
Na bok:użyj AS
słowo kluczowe dla aliasów kolumn (podczas gdy są one tylko szumem dla aliasów tabel).
Możesz też użyć ctid
jako substytut klucza podstawowego dla biednego człowieka. To byłoby jeszcze szybsze :
Szczegóły:
Generowanie sekwencji w kolejności
Przykład na dba.SE:
numerowanie wierszy kolejno dla wielu tabel