PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Sequenza temporanea all'interno di un SELECT

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