sql >> Database >  >> RDS >> PostgreSQL

Tijdelijke reeks binnen een SELECT

Waarom voeg je geen serie toe primaire sleutelkolom naar de tabel?

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

De eerste bewerking zal de tabel herschrijven en enige tijd een slot nemen. Ik zou dan uitvoeren

VACCUM FULL ANALYZE login;

Inferieure alternatieven:row_number() zoals opgemerkt door @Joachim . Voor maximale prestaties kunt u de OVER . verlaten clausule leeg:

row_number() OVER () AS rn

Terzijde:gebruik de AS trefwoord voor kolomaliassen (terwijl ze slechts ruis zijn voor tabelaliassen).

Of u kunt de ctid als surrogaat van de arme man voor een primaire sleutel. Dat zou nog sneller zijn :

Details:
Op volgorde genereren van sequenties

Voorbeeld op dba.SE:
rijen opeenvolgend nummeren voor een aantal tabellen



  1. Mysql dubbele externe sleutel beperking

  2. NOT IN gebruiken met NOT EQUAL bij het opvragen

  3. Een uitleg van MySqlBulkLoader

  4. Meerdere tabellen samenvoegen om NIET GELIJKE waarden te krijgen in MySQL