Зависит ли оно от количества наборов значений? Зависит ли это от количества байтов в операторе INSERT?
Вы можете вставлять бесконечно большое количество записей, используя шаблон INSERT ... SELECT
, при условии, что у вас есть эти записи или их часть в других таблицах.
Но если вы жестко кодируете значения с помощью шаблона INSERT ... VALUES
, то существует ограничение на размер / длину вашего оператора: max_allowed_packet , который ограничивает длина операторов SQL, отправленных клиентом на сервер базы данных, и влияет на любые типы запросов, а не только на оператор INSERT.
Вы можете вставить бесконечное количество строк с помощью одного оператора INSERT. Например, вы можете выполнить хранимую процедуру, в которой цикл выполняется тысячу раз, каждый раз выполняя запрос INSERT.
Или ваш INSERT может активировать триггер, который сам выполняет INSERT. Что срабатывает еще один триггер. И так далее.
Нет, это не зависит от количества наборов значений. И не зависит от количества байтов.
Существует предел того, насколько глубоко могут быть вложены ваши скобки, и предел длины вашего общего утверждения. По иронии судьбы, оба они упоминаются на thedailywtf.com. Однако оба упомянутых выше средства обходят эти ограничения.
Я считаю, что не существует определенного количества строк, которое вы можете вставить за INSERT, но может быть какой-то максимальный размер для запросов в целом.