Saya bertanya-tanya apa cara paling efisien untuk menghapus sejumlah besar baris dari PostgreSQL, proses ini akan menjadi bagian dari tugas berulang setiap hari untuk mengimpor data massal (delta penyisipan + penghapusan) ke dalam tabel. Mungkin ada ribuan, berpotensi jutaan baris untuk dihapus.
Saya punya file kunci utama, satu per baris. Dua opsi yang saya pikirkan ada di sepanjang baris di bawah ini, tapi saya tidak tahu / cukup memahami internal PostgreSQL untuk membuat keputusan yang tepat.
- Jalankan
DELETE
kueri untuk setiap baris dalam file, dengan sederhanaWHERE
pada kunci utama (atau kelompokkan penghapusan dalam batchn
menggunakanIN()
klausa) - Impor kunci utama ke tabel sementara menggunakan
COPY
perintah dan kemudian hapus dari tabel utama menggunakan gabungan
Setiap saran akan sangat dihargai!