Я пытаюсь вставить несколько записей, используя один запрос 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);
У меня есть два вопроса здесь.
Любая помощь будет принята с благодарностью.
Вы должны вставить как можно больше записей в один 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');
Совокупная разница в производительности становится более заметной по мере увеличения количества строк.
Других решений пока нет …