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

How to perform batch operation using mysql and php

我正在尝试使用单个 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. 第二个问题: 我如何 pause/break 在达到记录的最大限制后循环并插入它然后从我左边继续?

如有任何帮助,我们将不胜感激。

您应该在单个 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');

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