эффективен ли большой GROUP_CONCAT и как его обойти?

avatar
Aaser
8 августа 2021 в 21:52
27
0
0

у меня есть подобные запросы

SELECT
  (SELECT GROUP_CONCAT(c) FROM t1) AS t1c,
  (SELECT GROUP_CONCAT(c) FROM t2) AS t2c,
  (SELECT GROUP_CONCAT(c) FROM t3) AS t3c

каждое из значений t(1/2/3)c выше group_concat_max_len на столько, что оно превышает значение по умолчанию на четырехкратное значение

моя голова думает только о выполнении нескольких запросов

SELECT c FROM t1;
SELECT c FROM t2;
SELECT c FROM t3;

и привязывать каждый к массиву и взрывать их, поэтому мне интересно, есть ли способ имитировать group_concat вместо зацикливания в php, если он медленнее.

Источник
nbk
8 августа 2021 в 22:06
0

вы должны проверить это, запустив цикл в mysql, который объединяет все значения в огромном типе данных TEXT с версией php, но я сомневаюсь, что что-либо из этого когда-либо будет эффективным в любом случае. я сделал такую ​​штуку с джаваскриптом, что бы нагрузка была на сервер. Aölso php всегда имеет ограничение по времени

Aaser
8 августа 2021 в 22:13
0

@nbk будет ли использование group_concat, несмотря на достижение большой длины, быстрее, чем несколько запросов и циклов while?

nbk
8 августа 2021 в 22:31
0

Group_concat при таких размерах работает медленно. попробуй.

Rick James
9 августа 2021 в 06:17
1

Измените group_concat_max_len, чтобы ваш сеанс был достаточно большим. Предполагая, что это не более, скажем, 10% оперативной памяти. ваша задача должна работать нормально. Это будет достаточно быстро.

Ответы (0)