0

MySQL の 2 つのテーブルを PHP で更新する必要があります。2 番目のテーブルには、最初のテーブルに挿入される行の ID が必要です。

現時点では、配列内の各項目に対してこのプロセスをループする PHP コードがあります。

  1. ID の取得を試行して、レコードが存在するかどうかを確認します。
  2. レコードが存在しない場合は挿入し、最後の挿入 ID を取得します。
  3. 見つかった ID を外部キーとして使用して、2 番目のテーブルを更新します。

複数のデータベース呼び出しが行われるため、これは非常に非効率的です。各テーブルに 1 つずつ、2 つの配列にデータを格納し、ループが完了したときにそれらをバッチ挿入します。問題は、これを行う前に、最初のテーブルの行の ID を取得する必要があることです。

これは私がよく遭遇する問題です。これを行うための最も効率的/「ベストプラクティス」な方法は何ですか?

ありがとうございました

4

1 に答える 1

0

1 回のサーバー呼び出しで階層全体を挿入するためのストアド プロシージャを作成します。すべての親子レコードを XML として提供し、それを解析してプロシージャ内にレコードを挿入します (私の知る限り、MySql には MS SQL と同様の XML 関数が必要です)。これにより、同じ数の INSERT ステートメントが発生しますが、サーバー側で実行されるため、パフォーマンスが向上するはずです。例えば

exec MySp @myHierarchy = '<Recs><Parent Name="P1"><Child Name="C1" /><Child Name="C2"/></Parent></Recs>'
于 2012-07-26T09:11:43.660 に答える