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

0

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

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

  • 2
    Моя общая интуиция, когда подобные вещи опущены в документации MySQL, из-за многолетней ссылки на них, это обычно означает «достаточно большой, вам не нужно спрашивать» и «если вам нужно спросить, вы, вероятно, не должны его использовать за то, что вы спрашиваете в отношении ". Вроде как, как не прописано ограничение количества КОГДА-ТО в выражении CASE.
  • 0
    Я бы порекомендовал либо правильно нормализовать таблицы, либо сохранить json duckduckgo.com/?q=mysql+json&atb=v110-5_b&ia=web
Теги:
limit
mysql-5.7
mysql-8.0
string-function

1 ответ

0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню