-3

用 SQL 术语解释有点困难,因为我使用的是内部技术,但假设我有一个结构数组(类似于我们在 C#、C++ 等中的结构),我想将它的值插入表中. 因此,一种方法是使用 psedu 代码遍历数组,读取结构的字段并将它们插入到表中,如下所示:

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

但这很糟糕,因为性能。如果数组有十个元素,我们调用 insert 方法十次。应该有一种只用一次插入就可以做到这一点的绝妙方法,以某种方式在表上使用 JOINS 并只调用一次插入,但我无法想象如何做到这一点......

欢迎对此提出任何想法。

谢谢。

4

2 回答 2

5

使用单个查询将多条记录插入 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

这确保查询执行一次。这只是一个想法,避免多次调用插入

@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 回答