MySQL - сколько строк можно вставить в один оператор INSERT?

Зависит ли оно от количества наборов значений? Зависит ли это от количества байтов в операторе INSERT?

81
задан Michael McGowan 26 January 2012 в 02:58
поделиться

3 ответа

Вы можете вставлять бесконечно большое количество записей, используя шаблон INSERT ... SELECT , при условии, что у вас есть эти записи или их часть в других таблицах.

Но если вы жестко кодируете значения с помощью шаблона INSERT ... VALUES , то существует ограничение на размер / длину вашего оператора: max_allowed_packet , который ограничивает длина операторов SQL, отправленных клиентом на сервер базы данных, и влияет на любые типы запросов, а не только на оператор INSERT.

88
ответ дан 24 November 2019 в 09:35
поделиться

Вы можете вставить бесконечное количество строк с помощью одного оператора INSERT. Например, вы можете выполнить хранимую процедуру, в которой цикл выполняется тысячу раз, каждый раз выполняя запрос INSERT.

Или ваш INSERT может активировать триггер, который сам выполняет INSERT. Что срабатывает еще один триггер. И так далее.

Нет, это не зависит от количества наборов значений. И не зависит от количества байтов.

Существует предел того, насколько глубоко могут быть вложены ваши скобки, и предел длины вашего общего утверждения. По иронии судьбы, оба они упоминаются на thedailywtf.com. Однако оба упомянутых выше средства обходят эти ограничения.

5
ответ дан 24 November 2019 в 09:35
поделиться

Я считаю, что не существует определенного количества строк, которое вы можете вставить за INSERT, но может быть какой-то максимальный размер для запросов в целом.

1
ответ дан 24 November 2019 в 09:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: