PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Temporäre Sequenz innerhalb eines SELECT

Warum fügen Sie nicht eine Seriennummer hinzu Primärschlüsselspalte in die Tabelle?

ALTER TABLE login ADD column login_id serial;
ALTER TABLE login ADD CONSTRAINT login_pkey PRIMARY KEY(login_id);

Die erste Operation wird die Tabelle umschreiben und für einige Zeit sperren. Ich würde dann ausführen

VACCUM FULL ANALYZE login;

Minderwertige Alternativen:row_number() wie von @Joachim hervorgehoben . Für maximale Leistung können Sie OVER belassen Klausel leer:

row_number() OVER () AS rn

Beiseite:Verwenden Sie den AS Schlüsselwort für Spaltenaliase (während sie für Tabellenaliase nur Rauschen sind).

Oder Sie können den ctid als Ersatz für einen Primärschlüssel des armen Mannes. Das wäre noch schneller :

Details:
In-Order-Sequenzerstellung

Beispiel auf dba.SE:
Reihennummerierung für mehrere Tabellen fortlaufend