如何使用mysql和php执行批处理操作

时间:2016-03-11 14:59:54

标签: php mysql loops batch-processing

我试图使用单个MySQL查询插入多个记录,但我不想一次插入大量记录。

以下代码提取,构建和插入记录

if(is_array($id_rec)){
        $values = "";
        foreach($id_rec as $key=>$value){
            $values .= "(".(int)$value.",".(int)$id_group."), ";
        }
        $values = rtrim($values,", ");
        $sql = "INSERT IGNORE INTO fu_rec_group_link (id_rec, id_group) VALUES ".$values;
        $GLOBALS['db']->execute($sql);

我在这里有两个问题。

  1. 第一个问题: 我应该一次插入多少条记录?什么是正确的金额?
  2. 第二个问题: 如何在达到记录的最大限制后暂停/中断循环并插入它然后从我离开继续?
  3. 非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您应该在单个INSERT中插入尽可能多的记录,而不是将其分解为多个INSERTS。

例如,做

INSERT INTO mytable (column1, column2, column3)
VALUES ('text', 'text', 'text'),
       ('text', 'text', 'text'),
       ('text', 'text', 'text'),
       ('text', 'text', 'text');

比做

更快
INSERT INTO mytable (column1, column2, column3)
VALUES ('text', 'text', 'text'),
       ('text', 'text', 'text');
INSERT INTO mytable (column1, column2, column3)
VALUES ('text', 'text', 'text'),
       ('text', 'text', 'text');

随着行数的增加,性能的总体差异更加明显。