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