Mengapa Anda tidak menambahkan serial serial
kolom kunci utama ke tabel?
ALTER TABLE login ADD column login_id serial;
ALTER TABLE login ADD CONSTRAINT login_pkey PRIMARY KEY(login_id);
Operasi pertama akan menulis ulang tabel dan mengunci untuk beberapa waktu. Saya kemudian akan menjalankan
VACCUM FULL ANALYZE login;
Alternatif inferior:row_number()
seperti yang ditunjukkan oleh @Joachim
. Untuk performa maksimal, Anda dapat meninggalkan OVER
klausa kosong:
row_number() OVER () AS rn
Selain:gunakan AS
kata kunci untuk alias kolom (sementara itu hanya noise untuk alias tabel).
Atau Anda dapat menggunakan ctid
sebagai pengganti orang miskin untuk kunci utama. Itu akan menjadi lebih cepat :
Detail:
Pembuatan urutan sesuai pesanan
Contoh di dba.SE:
menomori baris secara berurutan untuk sejumlah tabel