Я думаю об использовании https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_field, но он ничего не говорит о каких-либо ограничениях с точки зрения того, сколько значений он может служба поддержки.
У кого-нибудь есть понимание этого? Спасибо!
Я не знаю, что существует ограничение на количество аргументов функции 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() будет сравнивать аргументы линейным образом, потому что реализация, вероятно, никогда не догадалась, что кто-то будет выдавать ей очень длинные списки. Поэтому поиск по десяткам тысяч аргументов для каждой строки, вероятно, будет узким местом с плохой производительностью.