Tại sao bạn không thêm chuỗi serial
cột khóa chính của bảng?
ALTER TABLE login ADD column login_id serial;
ALTER TABLE login ADD CONSTRAINT login_pkey PRIMARY KEY(login_id);
Thao tác đầu tiên sẽ viết lại bảng và mất một thời gian để khóa. Sau đó sẽ chạy
VACCUM FULL ANALYZE login;
Các lựa chọn thay thế kém hơn:row_number()
như được chỉ ra bởi @Joachim
. Để có hiệu suất tối đa, bạn có thể để OVER
mệnh đề trống:
row_number() OVER () AS rn
Ngoài ra:sử dụng AS
từ khóa cho bí danh cột (trong khi chúng chỉ nhiễu cho bí danh bảng).
Hoặc bạn có thể sử dụng ctid
với tư cách là người đại diện cho khóa chính của một người đàn ông nghèo. Điều đó thậm chí sẽ còn nhanh hơn :
Chi tiết:
Tạo trình tự theo thứ tự
Ví dụ trên dba.SE:
đánh số hàng liên tiếp cho một số bảng