|
иерархический запрос
|
|||
---|---|---|---|
#18+
Расскажите какие преимущества от использования иерархических запросов. И простейший примерчик, если не трудно, где эти преимущества проявляются в сравнении с обычным запросом. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2002, 15:58 |
|
иерархический запрос
|
|||
---|---|---|---|
#18+
Я думаю не правильно поставлен вопрос. Некорекктно говорить "где эти преимущества проявляются в сравнении с обычным запросом.". Иерархический запрос выполняет конкретную задачу, также как выполняет определённую задачу фраза group by, having. Но если в запросе не используются эти фразы - не значит что у него есть недостатки. Следующий пример показывает использование иерархического запроса и LEVEL: LEVEL Examples The following statement returns all employees in hierarchical order. The root row is defined to be the employee whose job is ’PRESIDENT’. The child rows of a parent row are defined to be those who have the employee number of the parent row as their manager number. SELECT LPAD(’ ’,2*(LEVEL-1)) || ename org_chart, empno, mgr, job FROM emp START WITH job = ’PRESIDENT’ CONNECT BY PRIOR empno = mgr; ORG_CHART EMPNO MGR JOB ------------ ---------- ---------- --------- KING 7839 PRESIDENT JONES 7566 7839 MANAGER SCOTT 7788 7566 ANALYST ADAMS 7876 7788 CLERK FORD 7902 7566 ANALYST ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2002, 16:26 |
|
иерархический запрос
|
|||
---|---|---|---|
#18+
И еще, фашка, которая понтравилась в использовании иерархических запросов: если пользователь хочет построить зацикленное дерево, то Оракл не даст, выдав исключение при иерархическом запросе. Полезно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2002, 19:44 |
|
иерархический запрос
|
|||
---|---|---|---|
#18+
И фишка... Хочу отсортировать по какому-либо полю в текущем уровне (LEVEL), без использования рекурсивных процедур создания списка? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2002, 09:47 |
|
иерархический запрос
|
|||
---|---|---|---|
#18+
Доброго вам времени суток! Я тут неданво как раз столкнулся с этим.... CONNECT BY вешь хорошая и полезная, но вот при большизх таблицах уж очень она медленно рабьотает.... По сему я написал всгео два тригера и пару методов, которые отвечают за повдеение веток и всего прочего, если будет интересно могу привести их исходники ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2002, 10:15 |
|
иерархический запрос
|
|||
---|---|---|---|
#18+
"Я тут неданво как раз столкнулся с этим.... CONNECT BY вешь хорошая и полезная, но вот при большизх таблицах уж очень она медленно рабьотает.... " Я надеюсь ты индексы не забыл создать? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2002, 11:15 |
|
иерархический запрос
|
|||
---|---|---|---|
#18+
2Java™ >Я тут неданво как раз столкнулся с этим.... CONNECT BY >вешь хорошая и полезная, но вот при большизх таблицах >уж очень она медленно рабьотает.... И это нормально, ИМХО, построить дерево на здоровой таблице - весчь не простая. Для ускорения, если нужно дерево не на всю таблицу, а только на ее часть, я обычно делаю select * from (select * from table where....) start... connect... Т.е. строю дерево на конечном наборе а не на всей таблице. Наверное (для многих) я открыл Америку и изобрел велосипед, но когда-то давно мне это показалось открытием, настолько велик был скачок производительности? 8-) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2002, 11:24 |
|
иерархический запрос
|
|||
---|---|---|---|
#18+
Индексы нет, не забыл конефно.... По понимаете у меня в базе больше 3 мил. записей....а алгоритм, по которому работает CONNECT BY как класс не может быть быстрым и не какие индексы не помогуть :(.... 2Серега У меня дерево например состоящие из 20.000 записей стоилось порядка 3 минут.... после того как я отказался от этого у меня оно стоиться за 16,5 секунд :) и это с учетом вывода на экран :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2002, 13:44 |
|
|
start [/forum/topic.php?fid=52&fpage=2835&tid=1992810]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 307ms |
total: | 417ms |
0 / 0 |