我已安裝mysql 5.6。正在增加group_concat_max_len到500000會導致性能問題?
我有一個查詢,它使用group_concat將用戶id列表連接到一個帶有','的字符串中。我需要將group_concat_max_len
的限制增加到500000.
會導致性能問題嗎?爲什麼group_concat首先受到限制?我應該查詢每一行並將其連接到服務器上嗎?
有關該問題的任何信息將不勝感激。
我已安裝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