MySQL 5.5.28 en Ubuntu 12.04
Si el resultado es más largo que group_concat_max_len
entonces, el resultado se trunca sin gracia.
Actualmente tengo un script que intenta verificar la longitud requerida con anticipación y establece group_concat_max_len
que sea lo suficientemente grande.
Pero la comprobación agrega consultas adicionales. ¿Hay alguna desventaja en simplemente establecer group_concat_max_len
el valor máximo? Lo bueno es menos consultas.
mysql
group-concatenation
Buttle Butkus
fuente
fuente
Respuestas:
Según MySQL BOL aquí
El resultado se trunca a la longitud máxima dada por la
group_concat_max_len
variable del sistema, que tiene undefault value of 1024
. El valor puede establecerse más alto, aunque la longitud máxima efectiva del valor de retorno está limitada por el valor demax_allowed_packet
. La sintaxis para cambiar el valor degroup_concat_max_len
atruntime
es la siguiente, donde val es anunsigned integer
:Nota: La
maximum permitted
longitud del resultadobytes
para laGROUP_CONCAT()
función. El valor por defecto es1024
.Como MySQL documentó el blog aquí ¿ Usando
GROUP_CONCAT
con unagroup_concat_max_len
configuración pequeña ? Su resultado serásilently truncated
(asegúrese de verificar las advertencias).Como MySQL Blog by Here : este parámetro limita la longitud del texto de un resultado de concatenación. Por defecto es . Creo que este es un valor muy bajo. He estado usando más y más, recientemente, para resolver problemas que de otra manera serían difíciles. Y en la mayoría de los casos, fue justo , lo que resultó en un truncamiento silencioso (¡Argh!) Del resultado, lo que arrojó resultados incorrectos. Es interesante saber que el valor máximo para este parámetro está limitado por . Sugeriría, entonces, que este parámetro debería eliminarse por completo, y tener como . De lo contrario, me gustaría que tuviera un , del orden de unos pocos .
@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 más su referencia aquí y aquí
fuente
Aprecio que esta pregunta sea un poco antigua ahora, pero en caso de que alguien la encuentre y se pregunte, una desventaja de establecer el valor máximo (o un valor muy grande) es que group_concat puede devolver un blob en lugar de un varchar. Las sugerencias en otros lugares dicen establecer group_concat_max_len en 512 para que siempre devuelva un varchar en lugar de un blob. Sin embargo, tiendo a lanzarlo a char cuando es necesario.
fuente