PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Séquence temporaire dans un SELECT

Pourquoi n'ajoutez-vous pas un serial colonne de clé primaire à la table ?

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

La première opération réécrira la table et prendra un verrou pendant un certain temps.Je lancerais alors

VACCUM FULL ANALYZE login;

Alternatives inférieures :row_number() comme l'a souligné par @Joachim . Pour des performances maximales, vous pouvez laisser le OVER clause vide :

row_number() OVER () AS rn

A part :utilisez le AS mot-clé pour les alias de colonne (alors qu'ils ne sont que du bruit pour les alias de table).

Ou vous pouvez utiliser le ctid comme substitut du pauvre pour une clé primaire. Ce serait encore plus rapide :

Détails :
Génération de séquences dans l'ordre

Exemple sur dba.SE :
numérotation consécutive des lignes pour un certain nombre de tables