¿Por qué no agrega un serial
columna de clave principal a la tabla?
ALTER TABLE login ADD column login_id serial;
ALTER TABLE login ADD CONSTRAINT login_pkey PRIMARY KEY(login_id);
La primera operación reescribirá la tabla y se bloqueará durante algún tiempo. Luego ejecutaría
VACCUM FULL ANALYZE login;
Alternativas inferiores:row_number()
como señalado por @Joachim
. Para obtener el máximo rendimiento, puede dejar OVER
cláusula vacía:
row_number() OVER () AS rn
Aparte:use el AS
palabra clave para alias de columna (mientras que son solo ruido para alias de tabla).
O puede usar el ctid
como sustituto de un hombre pobre para una clave principal. Eso sería incluso más rápido :
Detalles:
Generación de secuencia en orden
Ejemplo en dba.SE:
numeración de filas consecutivamente para un número de tablas