1

性能相关:

进行 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

4 回答 4

6

第二个更好。连接到数据库的成本很高。

换一种说法,什么更快?进行 1,000 次旅行以送出 1,000 个箱子还是一次旅行以送出 1,000 个箱子?

于 2013-02-02T20:47:23.027 回答
3

我想这个问题在官方网站上已经得到了很好的回答:

如果您同时从同一个客户端插入多行,请使用带有多个 VALUES 列表的 INSERT 语句一次插入多行。这比使用单独的单行 INSERT 语句要快得多(在某些情况下快很多倍)。

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

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

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

于 2013-02-02T20:49:47.410 回答
0

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

于 2013-02-02T20:48:14.523 回答
0

其简单,批量处理的成本低于一一处理。这都是关于成本开销的,这里是性能方面的资源。

于 2013-02-02T20:51:28.227 回答