Каков предел (с точки зрения байтов / количества аргументов) функции FIELD() в MySQL?

Я думаю об использовании https://dev.mysql.com/doc/refman/5.7/en/string-functions.html, но он ничего не говорит о каких-либо ограничениях с точки зрения того, сколько значений он может служба поддержки.

У кого-нибудь есть понимание этого? Спасибо!

1 ответ

Я не знаю, что есть ограничение на количество аргументов функции FIELD() для грамматики. Я предполагаю, что он ограничен максимальной длиной запроса SQL.

Ограничение на длину любого запроса SQL определяется max_allowed_packet в байтах. Значение по умолчанию для этой переменной в MySQL 5.7 составляет 4 МБ. Может быть увеличено до 1 ГБ. https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html

Я согласен с @Uueerdo - если вы генерируете список выражений длиннее 4 МБ, вам действительно следует задаться вопросом, является ли ваш подход к вашей задаче лучшим способом ее решения.

Я предполагаю, что функция FIELD() будет сравнивать аргументы линейным образом, потому что реализация, вероятно, никогда не догадалась, что кто-то будет выдавать ей очень длинные списки. Поэтому поиск по десяткам тысяч аргументов для каждой строки, вероятно, будет узким местом с плохой производительностью.

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