рекурсивный запрос занимает слишком много времени. Есть ли альтернативный способ? - PullRequest
0 голосов
/ 05 мая 2020

У меня вопрос по запросу в mysql.

Я сделал очень простой тест

Table test
id,
name,
parent_id

Запрос

with recursive step00(id,name,parent_id) as
(
    select id,name,parent_id
    from test
    where parent_id = 3 #test id
    union all
    select r.id, r.name, r.parent_id
    from test r
    inner join step00 on r.parent_id = step00.id
) select count(*) from step00;

Пользователь может иметь 1 пользователя как направления. (parent_id) Я вставил 500 000. У одного пользователя 4689 пользователей (максимум 10 уровней). Я выполнил приведенный выше запрос, и для возврата 4689 пользователей потребовалось 12 секунд.

Я хочу создать столбец, который сохранит все дочерние идентификаторы в json, чтобы уменьшить их, чтобы дочерние учетные записи получили все дочерние аккаунты быстрее. Есть ли альтернативный способ добиться этого без одного дополнительного столбца с быстрым результатом?

...