Varför lägger du inte till en serie
primärnyckelkolumn till tabellen?
ALTER TABLE login ADD column login_id serial;
ALTER TABLE login ADD CONSTRAINT login_pkey PRIMARY KEY(login_id);
Den första operationen kommer att skriva om tabellen och ta ett lås under en tid. Jag skulle sedan köra
VACCUM FULL ANALYZE login;
Sämre alternativ:row_number()
som påpekat av @Joachim
. För maximal prestanda kan du lämna OVER
klausul tom:
row_number() OVER () AS rn
Bortsett från:använd AS
nyckelord för kolumnalias (medan de bara är brus för tabellalias).
Eller så kan du använda ctid
som fattigmans surrogat för en primärnyckel. Det skulle vara ännu snabbare :
Detaljer:
Sekvensgenerering i beställning
Exempel på dba.SE:
numrering av rader i följd för ett antal tabeller