Proč nepřidáte seriál serial
sloupec primárního klíče do tabulky?
ALTER TABLE login ADD column login_id serial;
ALTER TABLE login ADD CONSTRAINT login_pkey PRIMARY KEY(login_id);
První operace přepíše tabulku a na nějakou dobu se uzamkne. Pak bych spustil
VACCUM FULL ANALYZE login;
Podřadné alternativy:row_number()
jak ukázal @Joachim
. Pro maximální výkon můžete ponechat OVER
klauzule prázdná:
row_number() OVER () AS rn
Stranou:použijte AS
klíčové slovo pro aliasy sloupců (zatímco pro aliasy tabulek jsou jen šumem).
Nebo můžete použít ctid
jako náhrada za primární klíč chudáka. To by bylo ještě rychlejší :
Podrobnosti:
Generování sekvence v pořadí
Příklad na dba.SE:
číslování řádků po sobě pro více tabulek