Добрый день, хотел проконсультироваться у знающих людей, реально ли оптимизировать данный запрос ?
Таблица test где продемонстрирована иерархия разделов.
parent_id - идентификатор раздела РОДИТЕЛЯ
+----+-------------+-------------+
| id | name | parent_id |
+----+-------------+-------------+
| 1 | aa | NULL |
| 2 | bb | 1 |
| 3 | cc | 2 |
| 4 | cc | NULL |
| 5 | dd | 4 |
| 6 | ee | 5 |
+----+------------+-------------+
Допустим нужно выбрать раздел 'cc' который относится к разделу 'bb' который в свою очередь относится к разделу 'aa'.
Мой вариант запроса:
select * from test where `name`='cc' and `parent_id`=(
select id from test where `name`='bb' and `parent_id`=(
select id from test where `name`="aa"
)
);
Есть ли иные пути создания запроса, можно ли укоротить запись или сделать ее выполнение быстрее чем в данном примере?
Заранее благодарю.
MySQL - Реально ли оптимизировать запрос?
-
Delirium
Re: MySQL - Реально ли оптимизировать запрос?
Пишу от "руки", за точность не ручаюсь.
Попробуйте что то в таком духе:
Код:
Что то в этом духе. Суть такая, что вы делаете тройную выборку из одной таблицы и присваиваете этим таблицам разные имена(Т1, Т2, Т3)(чтобы не путаться)/
Попробуйте что то в таком духе:
Код:
Код: Выделить всё
select T1.id, T1.name, T1.paren_td from test T1, test T2, test T3 where
T1.name='cc' and
T2.name='bb' and
T3.name='aa' and T2.parent_id = T3.id and T1.parent_id = T2.idЧто то в этом духе. Суть такая, что вы делаете тройную выборку из одной таблицы и присваиваете этим таблицам разные имена(Т1, Т2, Т3)(чтобы не путаться)/