Perché non aggiungi un serial
colonna chiave primaria della tabella?
ALTER TABLE login ADD column login_id serial;
ALTER TABLE login ADD CONSTRAINT login_pkey PRIMARY KEY(login_id);
La prima operazione riscriverà la tabella e prenderà un blocco per un po 'di tempo. Vorrei quindi eseguire
VACCUM FULL ANALYZE login;
Alternative inferiori:row_number()
come sottolineato da @Joachim
. Per le massime prestazioni puoi lasciare il OVER
clausola vuota:
row_number() OVER () AS rn
A parte:usa il AS
parola chiave per alias di colonna (mentre sono solo rumore per alias di tabella).
Oppure puoi utilizzare ctid
come surrogato del povero per una chiave primaria. Sarebbe ancora più veloce :
Dettagli:
Generazione sequenza in ordine
Esempio su dba.SE:
numerare le righe consecutivamente per un numero di tabelle