PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Sequência temporária dentro de um SELECT


Por que você não adiciona um serial coluna de chave primária para a tabela?
ALTER TABLE login ADD column login_id serial;
ALTER TABLE login ADD CONSTRAINT login_pkey PRIMARY KEY(login_id);

A primeira operação irá reescrever a tabela e travar por algum tempo.
VACCUM FULL ANALYZE login;

Alternativas inferiores:row_number() como apontado por @Joachim . Para desempenho máximo, você pode deixar o OVER cláusula vazia:
row_number() OVER () AS rn

À parte:use o AS palavra-chave para aliases de coluna (enquanto eles são apenas ruído para aliases de tabela).

Ou você pode usar o ctid como substituto do pobre para uma chave primária. Isso seria ainda mais rápido :

Detalhes:
Geração de sequência em ordem

Exemplo em dba.SE:
numerando linhas consecutivamente para um número de tabelas