Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » MySQL подготовленные запросы

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
 
Имеется сайт на одной машине, база MySQL на другой - скорость связи 30мб/c
 

Код:
$data->payment_schedule

содержит 360 строк, код ниже выполняется 20 секунд, что мне кажется, что это слишком долго. Я в коде не ошибся?
 
Подскажите пожалуйста, как ускорить процесс записи в базу?
 
Разместить все на одной машине не вариант
 

Код:
 
$qury = "INSERT INTO 1C_payment_schedule (`contract`, `payment_day`, `amount`, `comment`, `datecreate`) VALUES (?,?,?,?,?)";
$stmt = $this->db->mysqli->prepare($qury);
$stmt->bind_param('sssss', $contract, $payment_day, $amount, $comment, $datecreate);
                 
foreach ($data->payment_schedule as $payment_schedule) {
   $contract = $payment_schedule->contract;
   $payment_day = date("Y-m-d", strtotime($payment_schedule->payment_day));
   $amount = $payment_schedule->amount;
   $comment = $payment_schedule->comment;
   $datecreate = $data->datecreate;
   $stmt->execute();
}
 $this->db->mysqli->close();
 

 
 
 
Добавлено:
Кстати про многострочный INSERT я в курсе

Код:
 
foreach ($data->payment_schedule as $payment_schedule) {
   $contract = $payment_schedule->contract;
   $payment_day = date("Y-m-d", strtotime($payment_schedule->payment_day));
   $amount = $payment_schedule->amount;
   $comment = $payment_schedule->comment;
   $datecreate = $data->datecreate;
   $values .= "('$contract', '$payment_day', '$amount', '$comment', '$datecreate'),";
}
 
$values = trim($values, ',');
$response = $this->db->query("INSERT INTO 1C_payment_schedule (`contract`, `payment_day`, `amount`, `comment`, `datecreate`) VALUES $values");
 

Выполняется мгновенно.
 
Но что с подготовленными запросами? Почему так долго?

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 07:53 17-12-2020
cppasm



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Версия MySql какая? 5.7?
https://bugs.mysql.com/bug.php?id=73056
Пишут в 5.8 пофиксили.
А в 5.7 и ниже - либо повыключать логи если не нужны (смотри по ссылке какие), либо не использовать подготовленные запросы.

Всего записей: 925 | Зарегистр. 19-12-2006 | Отправлено: 09:24 17-12-2020
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо большое!
Версия 5.6.40

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 10:46 17-12-2020
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » MySQL подготовленные запросы


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru