#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.