sql >> Databáze >  >> RDS >> PostgreSQL

Dočasná sekvence v rámci SELECT

Proč nepřidáte seriál serial sloupec primárního klíče do tabulky?

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

První operace přepíše tabulku a na nějakou dobu se uzamkne. Pak bych spustil

VACCUM FULL ANALYZE login;

Podřadné alternativy:row_number() jak ukázal @Joachim . Pro maximální výkon můžete ponechat OVER klauzule prázdná:

row_number() OVER () AS rn

Stranou:použijte AS klíčové slovo pro aliasy sloupců (zatímco pro aliasy tabulek jsou jen šumem).

Nebo můžete použít ctid jako náhrada za primární klíč chudáka. To by bylo ještě rychlejší :

Podrobnosti:
Generování sekvence v pořadí

Příklad na dba.SE:
číslování řádků po sobě pro více tabulek



  1. Vytvoření dotazu MySQL (tabulka meta_key/meta_value)

  2. Jaký je rozdíl mezi schématem a databází?

  3. Jak zálohovat a obnovit databázi MySQL pomocí NetBeans?

  4. ER diagramy v IRI Workbench