正在增加group_concat_max_len到500000会导致性能问题?
问题描述:
我已安装mysql 5.6。正在增加group_concat_max_len到500000会导致性能问题?
我有一个查询,它使用group_concat将用户id列表连接到一个带有','的字符串中。我需要将group_concat_max_len
的限制增加到500000.
会导致性能问题吗?为什么group_concat首先受到限制?我应该查询每一行并将其连接到服务器上吗?
有关该问题的任何信息将不胜感激。
答
文档指出The result is truncated to the maximum length that is given by the group_concat_max_len system variable, which has a default value of 1024. The value can be set higher, although the effective maximum length of the return value is constrained by the value of max_allowed_packet.
在如此众多的百分比增加GROUP_CONCAT似乎不那么像正确的判罚。首先,它意味着改变其他系统变量,我的影响系统以不同的方式
除此之外,这是一个非常大的项目,只有一个group_concat查询,所以我不想仅为一个特定查询修改其他系统变量。
一般说来@Strawberry说的是正确的,默认情况下该值设置为1024。可能是一个很好的理由。
所以我分了我的查询,两个查询..
第一,将返回所有我需要除了GROUP_CONCAT列
第二个数据,返回所有我曾经group_cocat相关行。
关于GROUP_CONCAT(或CONCAT)需要构成答案的任何部分的关系数据库没有任何问题。所以我认为你真的需要问自己,如果你正确地接近真正的问题。你可能还会问自己,为什么这个变量默认没有设置为十亿或者其他什么。 – Strawberry
@Strawberry - 看起来你是正确的:) group_concat_max_len var不是很大的原因。性能方面,我将查询分解为两个查询,一个给我所有数据,另一个给出我以前用group_concat读取的相关行。请张贴您的答案,以便我将其标记。谢谢 – ufk
你被允许回答你自己的问题。 SO积极鼓励它。 http://stackoverflow.com/help/self-answer – Strawberry