FIND_IN_SET() в запросе mysql делает запрос очень медленным?

#mysql #sql #hierarchical-data #find-in-set

#mysql #sql #иерархический-данные #find-in-set

Вопрос:

Вот мой запрос, в котором я получаю список всех дочерних категорий для родительской категории, которая равна 3

 SELECT GROUP_CONCAT(lv SEPARATOR ',') 
FROM ( 
       SELECT @pv:=( 
                     SELECT GROUP_CONCAT(id SEPARATOR ',') 
                     FROM ad_category 
                     WHERE is_active = 1 
                       AND FIND_IN_SET(parent_id, @pv)
                   ) AS lv 
       FROM ad_category
       JOIN (SELECT @pv:=3)tmp
       WHERE FIND_IN_SET(parent_id, @pv)
     ) a;
 

Для приведенного выше запроса требуется 7 секунд, чтобы получить идентификатор 2100 , в строковом формате.
Мне нужно, чтобы запрос получал результаты за миллисекунду. Как я могу оптимизировать этот запрос оптимизированный запрос. Любая помощь хорошо заметна?

Вот мой формат таблицы категорий

 ///// MYSQL CATEGORY table
id             name               parent_id
 1             shoes                  0
 2             blue shoes             1
 3             men blue shoes         2
 4             men blue shoe small    3
 5             red shoes              1
 6             men red shoes          5
                          
 

Комментарии:

1. Просьба предоставить образцы данных и желаемые результаты, чтобы объяснить, что вы делаете.

2. На какой версии mysql вы работаете?

3. Пожалуйста, укажите саму задачу, а не вашу попытку ее решить.

4. Вы используете бета-версию MySQL с 2013 года, когда с тех пор было выпущено 30 выпусков ветки 5.7?

5. Я бы также рекомендовал не привыкать зависеть от := присваивания переменных в качестве побочного эффекта в выражениях, потому что эта практика устарела в MySQL 8.0.