2016-08-15 18 views
0

私は2つのクエリを実行しています:query1は、INSERT ... ON DUPLICATE KEY UPDATEtable1のバルクです。 query2についてはtable2にもう1つのバルクINSERTを追加したいと思います。アプリケーションのデータとともに、query1から挿入/更新されたIDを使用しています。私はtable1から必要なIDを選択してからアプリケーションデータと共にtable2に挿入する中間クエリでこれを行うことができますが、実際にはDBと一緒にそのクエリの前後の余分なネットワークを避けたいオーバーヘッド。これを避けるには、query1からIDを挿入/更新する方法がありますか、何らかの複雑さがありますが、比較的安価なINSERT ... SELECT FROMquery2に入れますか?別のテーブルに依存するMySQLの一括挿入

私が知っている限り、idsの追加/変更は別のクエリなしでは不可能です。INSERT ... SELECT FROM各行の挿入値は選択した値に依存していますしかし、私は間違っていることが証明されることを望んでいるか、それらのいずれかの周りに方法を示した。

答えて

2

バルクINSERTの結果として一連のIDを取得する方法はありません。

実際にSELECTクエリを実行してIDを取得し、2番目のバルクINSERTで使用することをお勧めします。しかし、それは面倒です。

別のオプションは、我々は最終的に、これはあなたのことを考えると、最速の選択肢であることがわかった同様のユースケースではINSERT INTO table2 ... SELECT FROM ... table1 JOIN table3 ...

を使用し、その後、のはtable3それを呼びましょう、一時的テーブルに第二バルクINSERTを実行することですインデックスtable3正しく。 この場合、SELECTがコード内でループする必要があることに注意してください。これは素晴らしいことです。

関連する問題