Waarom voeg je geen serie toe
primaire sleutelkolom naar de tabel?
ALTER TABLE login ADD column login_id serial;
ALTER TABLE login ADD CONSTRAINT login_pkey PRIMARY KEY(login_id);
De eerste bewerking zal de tabel herschrijven en enige tijd een slot nemen. Ik zou dan uitvoeren
VACCUM FULL ANALYZE login;
Inferieure alternatieven:row_number()
zoals opgemerkt door @Joachim
. Voor maximale prestaties kunt u de OVER
. verlaten clausule leeg:
row_number() OVER () AS rn
Terzijde:gebruik de AS
trefwoord voor kolomaliassen (terwijl ze slechts ruis zijn voor tabelaliassen).
Of u kunt de ctid
als surrogaat van de arme man voor een primaire sleutel. Dat zou nog sneller zijn :
Details:
Op volgorde genereren van sequenties
Voorbeeld op dba.SE:
rijen opeenvolgend nummeren voor een aantal tabellen