MySQL 5.5.28 no Ubuntu 12.04
Se o resultado for maior que group_concat_max_len
o resultado, ele será truncado sem graça.
Atualmente, tenho um script que tenta verificar antecipadamente o comprimento necessário e que os conjuntos group_concat_max_len
sejam grandes o suficiente.
Mas a verificação adiciona consultas extras. Existe alguma desvantagem em apenas definir group_concat_max_len
o valor máximo? A vantagem é menos consultas.
mysql
group-concatenation
Buttle Butkus
fonte
fonte
Respostas:
De acordo com o MySQL BOL aqui
O resultado é truncado para o comprimento máximo fornecido pela
group_concat_max_len
variável do sistema, que possui adefault value of 1024
. O valor pode ser definido como mais alto, embora o comprimento máximo efetivo do valor de retorno seja limitado pelo valor demax_allowed_packet
. A sintaxe para alterar o valor degroup_concat_max_len
atruntime
é a seguinte, em que val é umunsigned integer
:Nota: O
maximum permitted
comprimento do resultadobytes
para aGROUP_CONCAT()
função. O padrão é1024
.Como o MySQL documentou o blog Here Using
GROUP_CONCAT
with a smallgroup_concat_max_len
setting? Seu resultado serásilently truncated
(certifique-se de verificar os avisos).Como Blog do MySQL aqui : Este parâmetro limita o tamanho do texto de um resultado de concatenação. O padrão é . Eu acho que esse é um valor muito baixo. Eu tenho usado cada vez mais, recentemente, para resolver problemas difíceis. E, na maioria dos casos, era justo , resultando em truncamento silencioso (Argh!) Do resultado, retornando resultados incorretos. É interessante saber que o valor máximo desse parâmetro é limitado por . Sugiro, então, que esse parâmetro seja completamente removido e tenha o as as . Caso contrário, eu gostaria que tivesse um , na ordem de alguns .
@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
Para mais sua referência aqui e aqui
fonte
Eu aprecio que essa pergunta seja um pouco antiga agora, mas, caso alguém a encontre e esteja se perguntando, uma desvantagem de definir o valor máximo (ou um valor muito grande) é que group_concat pode retornar um blob em vez de um varchar. Sugestões em outros lugares dizem para definir group_concat_max_len como 512 para sempre retornar um varchar em vez de um blob. Eu costumo lançá-lo no char quando necessário.
fonte