2016-11-18 45 views
1

我已安装mysql 5.6。正在增加group_concat_max_len到500000会导致性能问题?

我有一个查询,它使用group_concat将用户id列表连接到一个带有','的字符串中。我需要将group_concat_max_len的限制增加到500000.

会导致性能问题吗?为什么group_concat首先受到限制?我应该查询每一行并将其连接到服务器上吗?

有关该问题的任何信息将不胜感激。

+0

关于GROUP_CONCAT(或CONCAT)需要构成答案的任何部分的关系数据库没有任何问题。所以我认为你真的需要问自己,如果你正确地接近真正的问题。你可能还会问自己,为什么这个变量默认没有设置为十亿或者其他什么。 – Strawberry

+0

@Strawberry - 看起来你是正确的:) group_concat_max_len var不是很大的原因。性能方面,我将查询分解为两个查询,一个给我所有数据,另一个给出我以前用group_concat读取的相关行。请张贴您的答案,以便我将其标记。谢谢 – ufk

+0

你被允许回答你自己的问题。 SO积极鼓励它。 http://stackoverflow.com/help/self-answer – Strawberry

回答

0

文档指出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相关行。

相关问题