PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Tymczasowa sekwencja w SELECT

Dlaczego nie dodasz serii kolumna klucza podstawowego do tabeli?

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

Pierwsza operacja spowoduje przepisanie tabeli i zablokuje na pewien czas. Następnie uruchomiłbym

VACCUM FULL ANALYZE login;

Gorsze alternatywy:row_number() jak wskazał @Joachim . Aby uzyskać maksymalną wydajność, możesz pozostawić OVER klauzula pusta:

row_number() OVER () AS rn

Na bok:użyj AS słowo kluczowe dla aliasów kolumn (podczas gdy są one tylko szumem dla aliasów tabel).

Możesz też użyć ctid jako substytut klucza podstawowego dla biednego człowieka. To byłoby jeszcze szybsze :

Szczegóły:
Generowanie sekwencji w kolejności

Przykład na dba.SE:
numerowanie wierszy kolejno dla wielu tabel



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie XPath do danych hierarchicznych, z zachowaniem relacji przodek-potomek

  2. Postgresql SELECT, jeśli ciąg zawiera

  3. Szyny 3.1. Heroku PGError:operator nie istnieje:znak zmienny =liczba całkowita

  4. Dlaczego PostgreSQL połączył użytkowników i grupy w role?

  5. jak odwołać się do zmiennej schematu w plpgsql