Hvorfor tilføjer du ikke en serie
primær nøglekolonne til tabellen?
ALTER TABLE login ADD column login_id serial;
ALTER TABLE login ADD CONSTRAINT login_pkey PRIMARY KEY(login_id);
Den første operation vil omskrive tabellen og tage en lås i nogen tid. Jeg ville derefter køre
VACCUM FULL ANALYZE login;
Underordnede alternativer:row_number()
som påpeget af @Joachim
. For maksimal ydeevne kan du forlade OVER
klausul tom:
row_number() OVER () AS rn
Til side:brug AS
nøgleord for kolonnealiasser (mens de kun er støj for tabelaliasser).
Eller du kan bruge ctid
som fattigmands surrogat for en primærnøgle. Det ville være endnu hurtigere :
Detaljer:
Sekvensgenerering i rækkefølge
Eksempel på dba.SE:
nummerering af rækker fortløbende for et antal tabeller