MySQL 5.5.28 в Ubuntu 12.04
Если результат длиннее, чем group_concat_max_len
результат, результат будет изящно усечен.
В настоящее время у меня есть скрипт, который пытается проверить требуемую длину заранее и устанавливает group_concat_max_len
достаточно большой размер .
Но проверка добавляет дополнительные запросы. Есть ли недостаток в том, чтобы просто установить group_concat_max_len
максимальное значение? Преимущество - меньше запросов.
mysql
group-concatenation
Баттл Буткус
источник
источник
Ответы:
В соответствии с MySQL BOL здесь
Результат усекается до максимальной длины, заданной
group_concat_max_len
системной переменной, которая имеетdefault value of 1024
. Значение может быть установлено выше, хотя эффективная максимальная длина возвращаемого значения ограничена значениемmax_allowed_packet
. Синтаксис для изменения значенияgroup_concat_max_len
atruntime
следующий, где val - этоunsigned integer
:Примечание. Длина
maximum permitted
результатаbytes
дляGROUP_CONCAT()
функции. По умолчанию это1024
.Как MySQL документировал блог здесь, используя
GROUP_CONCAT
небольшойgroup_concat_max_len
параметр? Ваш результат будетsilently truncated
(обязательно проверьте предупреждения).As MySQL Blog by Here : Этот параметр ограничивает длину текста результата конкатенации. По умолчанию оно . Я думаю, что это очень низкая стоимость. В последнее время я все больше и больше использую для решения сложных проблем. И в большинстве случаев было просто , что приводило к тихому (Argh!) Усечению результата, возвращая таким образом неверные результаты. Интересно узнать, что максимальное значение этого параметра ограничено . Тогда я бы предложил, чтобы этот параметр был полностью удален и имел значение как . В противном случае, я бы хотел, чтобы это было в порядке нескольких .
@Shlomi Noach
group_concat_max_len
maximum
GROUP_CONCAT
1024
GROUP_CONCAT
1024
too low
max_packet_size
max_packet_size
limitation
only limitation
very large default value
MB
Для дальнейшей вашей ссылки здесь и здесь
источник
Я ценю, что этот вопрос уже немного устарел, но в случае, если кто-то найдет его и задается вопросом, одним из недостатков установки максимального (или очень большого) значения является то, что group_concat может возвращать blob, а не varchar. В других предложениях сказано, что для group_concat_max_len нужно 512, чтобы он всегда возвращал varchar, а не blob. Я имею тенденцию просто бросать это к символу, где необходимо все же.
источник