PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Временна последователност в рамките на SELECT

Защо не добавите сериен колона с първичен ключ към таблицата?

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

Първата операция ще пренапише таблицата и ще заключи за известно време. След това ще стартирам

VACCUM FULL ANALYZE login;

По-ниски алтернативи:row_number() както посочено от @Joachim . За максимална производителност можете да оставите OVER празна клауза:

row_number() OVER () AS rn

Освен това:използвайте AS ключова дума за псевдоними на колони (докато те са просто шум за псевдоними на таблици).

Или можете да използвате ctid като заместител на първичен ключ на бедния човек. Това би било още по-бързо :

Подробности:
Генериране на последователност по ред

Пример за dba.SE:
номериране на редове последователно за определен брой таблици



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Синтаксисът на Postgresql regexp_matches не работи според очакванията

  2. Как да сравняваме масиви в PostgreSQL

  3. Как мога да разбера дали Autovacuum на PostgreSQL работи на UNIX?

  4. Postgres:как закръгляте времевата марка нагоре или надолу до най-близката минута?

  5. Как мога да преобразувам всички колони в моята база данни в нечувствителни към главни и малки букви