Menjawab Q 1 sendiri:Sepertinya masalahnya lebih berkaitan dengan Postgresql (atau lebih tepatnya Database secara umum). Mempertimbangkan poin yang dibuat dalam artikel ini:https://use-the- index-luke.com/sql/dml/insert Saya menemukan yang berikut:
1) Menghapus semua indeks dari tabel tujuan mengakibatkan kueri berjalan dalam 9 detik. Membangun kembali indeks (dalam postgresql) membutuhkan waktu 12 detik, jadi masih jauh di bawah waktu lainnya.
2) Dengan hanya kunci utama di tempat, Memasukkan baris yang diurutkan oleh kolom kunci utama mengurangi waktu yang dibutuhkan menjadi sekitar sepertiga. Ini masuk akal karena harus ada sedikit atau tidak ada pengocokan baris indeks yang diperlukan. Saya juga memverifikasi bahwa ini adalah alasan mengapa cartesian saya bergabung di postgresql lebih cepat di tempat pertama (IE baris dipesan oleh indeks, murni secara kebetulan), menempatkan baris yang sama di tabel sementara (tidak berurutan) dan memasukkan dari itu sebenarnya membutuhkan waktu lebih lama.
3) Saya mencoba eksperimen serupa pada sistem mysql kami dan menemukan peningkatan yang sama dalam kecepatan penyisipan saat menghapus indeks. Namun dengan mysql tampaknya membangun kembali indeks menghabiskan waktu yang didapat.
Saya harap ini membantu siapa pun yang menemukan pertanyaan ini dari penelusuran.
Saya masih bertanya-tanya apakah mungkin untuk menghapus langkah menulis ke csv dengan python (Q2 di atas) karena saya yakin saya dapat menulis sesuatu dengan python yang akan lebih cepat daripada postgresql murni.
Terima kasih, Giles