mysqli_multi_query и ошибка commands out of sync you can't run this command now

WMix

герр M:)ller
Партнер клуба
И часто ты по сто тыщ инсертов делаешь?
у нас импорт ежедневный, 10к это мало, обновление цен суточно может сотнями (к) измеряться,

Одна там секунда или двадцать - вообще никого не волнует. Читабельность кода намного важнее.
пол часа или полтора уже чувствительней, и так то никто не пишет, в коде будет ближе к $this->impotr('tablename', [options]) написано, а вообще согласен, обычно построчная логика намного ближе в понимании, и я бы плюнул на эти копейки
 

Фанат

oncle terrible
Команда форума
в коде будет ближе к $this->impotr('tablename', [options]) написано,
А я кстати зашел чтобы согласиться с твоим подходом - что действительно, весь этот код все равно внутри запрятан и вызывается одной командой.
Так что да, если не лень то можно сделать тем более что с оператором распаковки аргкментов код получается уже вполне приличный
 

Yoskaldyr

"Спамер"
Партнер клуба
все это хорошо работает когда таблицы простые и без индексов. или когда вставка с нуля в пустую таблицу идёт. а когда есть какой либо жирный индекс, то что 1 инсерт с мульти велью, что куча отдельных инсертов в одной транзакции - пофигу. все равно 99% времени занимает индекс ребилд. конечно куча отдельных инсертов в отдельных транзакциях это будет тормоз, но речь не о них же
 

AnrDaemon

Продвинутый новичок
На счёт "многострочные vs. прерапированные" не знаю, мне в голову не приходило так головой болеть, а препарированные против прямых - ускорение я лично ощутил.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
все это хорошо работает когда таблицы простые и без индексов. или когда вставка с нуля в пустую таблицу идёт. а когда есть какой либо жирный индекс, то что 1 инсерт с мульти велью, что куча отдельных инсертов в одной транзакции - пофигу. все равно 99% времени занимает индекс ребилд. конечно куча отдельных инсертов в отдельных транзакциях это будет тормоз, но речь не о них же
Если что, то при транзакционном инсерте будет 1 ребилд индекса, а при отдельных - столько, сколько инсертов.
 

Yoskaldyr

"Спамер"
Партнер клуба
Если что, то при транзакционном инсерте будет 1 ребилд индекса, а при отдельных - столько, сколько инсертов.
спасибо кэп! только кажется именно это я и написал. но уточню. индекс ребилдится при коммите, и не важно это отдельный запрос или конечный коммит транзакции
 
Сверху