如何使用 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);
我有两个问题。
- 第一个问题:
我应该一次插入多少条记录?什么是适量?
- 第二个问题:
我如何 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');
随着行数的增加,性能的总体差异更加明显。
我正在尝试使用单个 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);
我有两个问题。
- 第一个问题: 我应该一次插入多少条记录?什么是适量?
- 第二个问题: 我如何 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');
随着行数的增加,性能的总体差异更加明显。