-3

社内のテクノロジーを使用しているため、SQL 用語で説明するのは少し難しいですが、構造体の配列 (C#、C++ などの構造体に似ています) があり、その値をテーブルに挿入したいとします。 . したがって、1 つの方法は、配列を反復処理し、構造体のフィールドを読み取って、次のようにテーブルに挿入する疑似コードです。

for int i =1 to array.Lenght
{
    insert into MyTable values
    {
       MyTable.Field1 = array[i].Field1;
       //etc ...
    }
}

しかし、パフォーマンスのために、これは悪いことです。配列に 10 個の要素がある場合、insert メソッドを 10 回呼び出します。テーブルで JOINS を使用し、insert を 1 回呼び出すだけで、1 回の挿入でこれを行う素晴らしい方法があるはずですが、その方法は想像できません...

これについての考えは大歓迎です。

ありがとう。

4

2 に答える 2

5

1 つのクエリで複数のレコードを MySQL に挿入します。

INSERT INTO example
  (example_id, name, value, other_value)
VALUES
  (100, 'Name 1', 'Value 1', 'Other 1'),
  (101, 'Name 2', 'Value 2', 'Other 2'),
  (102, 'Name 3', 'Value 3', 'Other 3'),
  (103, 'Name 4', 'Value 4', 'Other 4');

http://www.electrictoolbox.com/mysql-insert-multiple-records/

于 2012-07-03T18:21:46.507 に答える
1

これにより、クエリが 1 回実行されることが保証されます。これは単なるアイデアであり、複数の呼び出しの挿入を回避します

@sql = 'insert into mytable(col_1) values'
for int i =1 to array.Lenght
{
   if(i > 1)
    @sql = ',('+@sql + array[i].Field1+')'
   else
    @sql = '('+@sql + array[i].Field1+')'
}
@sql = @sql + ';'
exec @sql

スクリプトは次のようになります

 insert into mytable(col_1) values
 (1),(2),(3);
于 2012-07-03T18:47:09.497 に答える