sql >> Base de Datos >  >> RDS >> PostgreSQL

Secuencia temporal dentro de un SELECT

¿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