0

テーブルに複数の値を挿入するとします。各挿入の前後にいくつかの依存アクションを実行する必要があるため、この手順はすべて単一のトランザクションで実行する必要があります。ここで、挿入されたすべての行依存アクションが、以前にコミットされた挿入に依存しているとします。どのシナリオが優れているか:

  1. プログラムレベルで値の挿入を繰り返し、毎回ストアドプロシージャを呼び出します(MySQLサーバーとアプリケーションは異なるマシンにインストールされています)
  2. 内部トランザクションとコミットでのカーソルの使用
  3. while ループの使用
  4. その他のシナリオ
4

2 に答える 2

0

個人的には、フォームの単一の挿入クエリを構築することを検討します

INSERT INTO tbl_name 
(a,b,c) 
VALUES
(1,2,3)
,(4,5,6)
,(7,8,9);

単一の挿入のために一連のデータをストアド プロシージャに渡すことができない場合は、コードでそれを構築します。SOにはさまざまな言語の例がいくつかあるようです(編集:SQLを含む)

編集:コメントに答える。いいえ、わかりました。私が暗示していたのは、これを最初にコードで構築することです (以前にコミットされたデータ、および/または挿入される新しいデータを使用)。私の意見では、必要な最適化にならない限り、SQL DB への複数回の呼び出しは避けるべきです。単一のトランザクションがデータをロックするためです (もちろん、選択した分離レベルによって異なります)。サンプルは、最終的な sql が何になるかを示すためのものです。それは理にかなっていますか?

于 2013-06-02T11:42:25.467 に答える