Tôi muốn chuyển một số dữ liệu từ bảng này sang bảng khác (với lược đồ có thể khác). Giải pháp đơn giản mà bạn nghĩ đến là -di chuyển dữ liệu từ bảng này sang bảng khác, phiên bản postgresql
start a transaction with serializable isolation level;
INSERT INTO dest_table SELECT data FROM orig_table,other-tables WHERE <condition>;
DELETE FROM orig_table USING other-tables WHERE <condition>;
COMMIT;
Bây giờ nếu số lượng dữ liệu khá lớn và <condition>
đắt tiền để tính toán? Trong PostgreSQL, một quy tắc RULE hoặc được lưu trữ có thể được sử dụng để xóa dữ liệu khi đang bay, chỉ đánh giá tình trạng một lần. Giải pháp nào tốt hơn? Có các lựa chọn khác không?
Tôi đã thực hiện một số chế biến thử nghiệm lượng lớn dữ liệu sử dụng trình kích hoạt, từng hàng và sử dụng quy trình được lưu trữ với một giao dịch duy nhất. Cách tiếp cận thủ tục được lưu trữ nhanh hơn. – pcent
Bạn cũng nên tinh chỉnh máy chủ PostgreSQL của mình để nâng cao hiệu suất. Đọc: http://wiki.postgresql.org/wiki/Performance_Optimization – pcent
yah, tôi nghĩ rằng hướng dẫn phải đủ điều kiện để nói rằng một COPY nhanh hơn một tập hợp các câu lệnh INSERT, mỗi câu một hàng. CH INSN ... CHỌN để sao chép dữ liệu xung quanh tôi nghĩ là tối ưu vì dữ liệu không được truyền qua bên ngoài trình thực thi. – araqnid