![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
Smith312 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 2.5.2008 Репутация: нет Всего: нет |
Добрый день, хотел проконсультироваться у знающих людей, реально ли оптимизировать данный запрос ?
Таблица 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" ) ); Есть ли иные пути создания запроса, можно ли укоротить запись или сделать ее выполнение быстрее чем в данном примере? Заранее благодарю. |
|||
|
||||
Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 15 Всего: 54 |
Попробуйте outer join
-------------------- ![]() |
|||
|
||||
Smith312 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 2.5.2008 Репутация: нет Всего: нет |
можно пример кодом, что именно вы имели ввиду?
|
|||
|
||||
Smith312 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 2.5.2008 Репутация: нет Всего: нет |
Могу дать 3WMZ тому кто предложит лучший вариант оптимизации.
|
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
достаточно громоздко, хотя можно применить explain - скорее всего, оптимизитор нормально обработает все эти подзапрсы. но всяко лучше join на саму себя, чем эти вложенные подзапросы:
однако, я бы на твоем месте посмотрел механизм netsted sets(поискай в гугле) как альтернативу структуры хранения и выборки. возможно, тебе больше подойдет. |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |