2016-11-18 47 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相關行。

相關問題