Мне не известно, что существует ограничение на количество аргументов функции 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 () будет сравнивать аргументы линейным образом, потому что реализация, вероятно, никогда не догадалась, что кто-то будет выдавать ей очень длинные списки.Поэтому поиск по десяткам тысяч аргументов для каждой строки, вероятно, станет узким местом с плохой производительностью.