Ubuntu 12.04 上的 MySQL 5.5.28
如果结果比结果长,group_concat_max_len
则结果将被优雅地截断。
目前我有一个脚本试图提前检查所需的长度并设置group_concat_max_len
为足够大。
但是检查会增加额外的查询。group_concat_max_len
仅设置为最大值有什么缺点吗?好处是更少的查询。
Ubuntu 12.04 上的 MySQL 5.5.28
如果结果比结果长,group_concat_max_len
则结果将被优雅地截断。
目前我有一个脚本试图提前检查所需的长度并设置group_concat_max_len
为足够大。
但是检查会增加额外的查询。group_concat_max_len
仅设置为最大值有什么缺点吗?好处是更少的查询。
根据 MySQL BOL这里
结果被截断为系统变量给出的最大长度,该
group_concat_max_len
变量具有default value of 1024
. 该值可以设置得更高,尽管返回值的有效最大长度受 值的限制max_allowed_packet
。更改group_concat_max_len
at值的语法runtime
如下,其中 val 为unsigned integer
:注意:函数的
maximum permitted
结果长度bytes
。GROUP_CONCAT()
默认值为1024
.正如 MySQL 记录的博客Here Using
GROUP_CONCAT
with a smallgroup_concat_max_len
setting?您的结果将是silently truncated
(请务必检查警告)。As MySQL Blog by Here:此参数限制连接结果的文本长度。它默认为. 我认为这是一个非常低的价值。最近,我越来越多地使用它来解决其他困难的问题。在大多数情况下, is just ,导致结果被无声(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。不过,我倾向于在必要时将其转换为 char 。