在SQL中插入多行

时间:2013-02-02 20:46:09

标签: php mysql sql performance

与绩效相关:

最好让1000个查询插入1000行:

    for($i=1;$i<=1000;++$i){
         $query = 'insert into table1 (First,Last) values ("Fred","Smith")';
         mysql_query($query);
    }

或者使用PHP创建查询(通过在for循环中连接值),如下所示:

   $query = ' insert into table1 (First,Last) values ("Fred","Smith"),
      ("John","Smith"),
      ...
      ("Michael","Smith"),
      ("Robert","Smith")';
   mysql_query($query);

鉴于可能有很多值,我选择一次插入10个值。我不知道这是否可以,在这种情况下最好的做法是什么?

4 个答案:

答案 0 :(得分:6)

第二个更好。连接数据库非常昂贵。

另一种说法,更快的是什么? 1000次旅行可以下载1000个箱子或者一次旅行可以下载1000个箱子吗?

答案 1 :(得分:3)

我想,这个问题在official site

得到了很好的回答
  

如果您同时从同一客户端插入多行,   使用带有多个VALUES列表的INSERT语句来插入多个   一次排。这速度要快得多(有些速度要快很多倍)   case)比使用单独的单行INSERT语句。

我建议整个页面,因为它列出了优化多插入(针对不同类型的引擎)的几种策略。然而在最后它提到了......

  

加载数据的INSERT仍然比LOAD DATA INFILE慢得多,   即使使用刚刚概述的策略。

...这是完全正确的:如果您需要将一些巨大的(但是静态的)数据集加载到DB中,请改用LOAD DATA INFILE语句。

答案 2 :(得分:0)

第二个是更好的,你可以控制它,第一个你没有太多控制插入不同的值

答案 3 :(得分:0)

批处理的简单,成本低于逐个处理。这完全取决于成本的高低,在这方面它是一种性能资源。