Плохо ли запускать хранимые процедуры N раз в цикле PHP for?

Я сохранил процедуру, которая принимает идентификатор и строку и сохраняет пару в таблице перекрестных ссылок. Если мой PHP получит 6 наборов, если пары id и string, цикл for for PHP выполнит эту хранимую процедуру шесть раз.

Если у меня есть миллионы пользователей, выполняющих эту хранимую процедуру, является ли это чрезмерно большой нагрузкой на мои серверы?

Должен ли я вместо этого объединить шесть строк в одну строку с разделителями и передать эту большую строку как одно значение хранимой процедуре, которая затем разделит строку и введет каждую отдельную строку в мою таблицу?

1 ответ

Решение

Похоже, вы могли бы хотеть что-то вроде этого:

$pairs = array(
    42=>"Hello",
    93=>"World",
    // ... insert more ID => string pairs
);
// now convert to a query:
$sql = "INSERT INTO `tablename` (`id`,`string`) VALUES ";
$rows = array();
foreach($pairs as $id=>$string) {
    $rows[] = "(".intval($id).",'".appropriate_escaping_function($string)."')";
}
$sql .= implode(", ",$rows);
execute_mysql_query_function($sql);

Для этого требуется выполнить только один запрос, независимо от того, сколько у вас пар ключ / значение.

Другие вопросы по тегам