Q 1に自分で答える:問題はPostgresql(またはデータベース一般)に関係しているようです。この記事で指摘された点を考慮に入れる: https:// use-the- index-luke.com/sql/dml/insert 私は次を見つけました:
1)宛先テーブルからすべてのインデックスを削除すると、クエリは9秒で実行されました。 (postgresqlでの)インデックスの再構築にはさらに12秒かかりましたが、それでも他の時間よりも十分です。
2)主キーのみが配置されている場合、主キーの列順に行を挿入すると、所要時間が約3分の1に短縮されました。インデックス行のシャッフルはほとんどまたはまったく必要ないため、これは理にかなっています。また、これがpostgresqlでのデカルト結合が最初に高速であった理由であることも確認しました(つまり、行はインデックスによって順序付けられましたが、純粋に偶然です)、同じ行を一時テーブルに配置し(順序付けされていません)、そこから挿入します実際には割り当てに時間がかかりました。
3)mysqlシステムで同様の実験を試みたところ、インデックスを削除したときに挿入速度が同じように向上することがわかりました。ただし、mysqlを使用すると、インデックスの再構築はいつでも使い果たされたように見えました。
これが、検索からこの質問に出くわした他の人の助けになることを願っています。
純粋なpostgresqlよりも高速なPythonで何かを書くことができると信じているので、Pythonでcsvへの書き込みステップ(上記のQ2)を削除することは可能かどうかまだ疑問です。
ありがとう、ジャイルズ