Войти

Показать полную графическую версию : Реально ли оптимизировать запрос?


volter
28-03-2009, 19:36
Добрый день, хотел проконсультироваться у знающих людей, реально ли оптимизировать данный запрос ?

Таблица 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"
)
);

Есть ли иные пути создания запроса, можно ли укоротить запись или сделать ее выполнение быстрее чем в данном примере?

Заранее благодарю.

Delirium
30-03-2009, 02:58
Пишу от "руки", за точность не ручаюсь.
Попробуйте что то в таком духе:

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)(чтобы не путаться)/




© OSzone.net 2001-2012