Tôi đang tự hỏi cách hiệu quả nhất sẽ là xóa số lượng lớn các hàng khỏi PostgreSQL, quá trình này sẽ là một phần của nhiệm vụ định kỳ mỗi ngày để nhập dữ liệu hàng loạt (một loạt các phần chèn + xóa) vào một bảng. Có thể có hàng ngàn, có khả năng hàng triệu hàng cần xóa.
Tôi có một tập tin các khóa chính, mỗi khóa một dòng. Hai tùy chọn mà tôi đã nghĩ đến nằm dọc theo các dòng dưới đây, nhưng tôi không biết / hiểu đủ về các phần bên trong của PostgreQuery để đưa ra quyết định sáng suốt nhất.
- Thực hiện một
DELETE
truy vấn cho mỗi hàng trong tệp, với một khóa đơn giảnWHERE
trên khóa chính (hoặc nhóm các lần xóa trong các đợtn
sử dụng mộtIN()
mệnh đề) - Nhập khóa chính vào bảng tạm thời bằng
COPY
lệnh và sau đó xóa khỏi bảng chính bằng cách sử dụng phép nối
Bất kỳ đề xuất sẽ được nhiều đánh giá cao!