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
DELETEkueri untuk setiap baris dalam file, dengan sederhanaWHEREpada kunci utama (atau kelompokkan penghapusan dalam batchnmenggunakanIN()klausa) - Impor kunci utama ke tabel sementara menggunakan
COPYperintah dan kemudian hapus dari tabel utama menggunakan gabungan
Setiap saran akan sangat dihargai!