Защо не добавите сериен
колона с първичен ключ към таблицата?
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:
номериране на редове последователно за определен брой таблици