2016-11-18 8 views
1

У меня установлен mysql 5.6.увеличивает group_concat_max_len до 500000, что вызовет проблему с производительностью?

У меня есть запрос, который использует group_concat для объединения списка идентификаторов пользователей в одну строку с помощью ','. мне нужно увеличить предел group_concat_max_len до 500000.

это вызовет проблему с производительностью? почему group_concat ограничен в первую очередь? Должен ли я запрашивать каждую строку и конкатрировать ее на сервере?

вся информация относительно выпуска была бы принята с благодарностью.

+0

Нет вопросов относительно реляционных баз данных, для которых GROUP_CONCAT (или CONCAT) требуется любая часть ответа. Поэтому я думаю, вам действительно нужно спросить себя, правильно ли вы приближаетесь к реальной проблеме. Вы также можете спросить себя, почему переменная не установлена ​​в миллиард или что-то еще по умолчанию. – Strawberry

+0

@Strawberry - кажется, что вы правы :) group_concat_max_len var невелик по какой-то причине. я разбил запрос на два запроса, один из которых дал мне все данные, а другой, который дает соответствующие строки, которые я бы ранее извлекал с помощью group_concat. пожалуйста, напишите свой ответ, чтобы я отметил его. спасибо – ufk

+0

Вы можете ответить на свой вопрос. ТАК положительно его поощряет. 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.