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

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

Кто-нибудь имеет какое-либо представление об этом?Спасибо!

1 Ответ

0 голосов
/ 06 февраля 2019

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

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

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

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

...