Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Реально ли оптимизировать запрос? (http://forum.oszone.net/showthread.php?t=136123)

volter 28-03-2009 19:36 1077332

Реально ли оптимизировать запрос?
 
Добрый день, хотел проконсультироваться у знающих людей, реально ли оптимизировать данный запрос ?

Таблица 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 1078571

Пишу от "руки", за точность не ручаюсь.
Попробуйте что то в таком духе:

Код:

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


Время: 02:43.

Время: 02:43.
© OSzone.net 2001-