|
|
|
sys_connect_by_path(rownum) с фильтрацией
|
|||
|---|---|---|---|
|
#18+
dbms_photoshoprownum генерится попадании новой строки в результирующий recordset!0 лет прошло :) 20295979 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2017, 07:19 |
|
||
|
sys_connect_by_path(rownum) с фильтрацией
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopЭто тоже для меня? :) На основании чего сделан вывод, что мне это не очевидно? PS. Лучше б ты Станиславу отвечал на его некорректную реплику. Тебе, тебе: stax..dbms_photoshopпропущено... Что? а когда по твоему ? соответственно и ровнум вычисляется после "иерархичной" сортировки ..... stax "иерархичнaя" сортировкa это тот случай когда ROWNUM присваивается после сортиpовки. Так-что мой пост это ответ на твой "Что?". SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2017, 16:09 |
|
||
|
sys_connect_by_path(rownum) с фильтрацией
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopstax.., Никакой сортировки по умолчанию не выполняется. Выполняется построение дерева методом обхода в глубину. Более конкретным языком http://docs.oracle.com/cd/B19306_01/server.102/b14200/queries003.htm Oracle returns the rows in the order shown in Figure 9-1. In the diagram, children appear below their parents. For an explanation of hierarchical trees, see Figure 3-1, "Hierarchical Tree". А при использовании rownum на первый взягляд может показаться неожиданным, но по факту все довольно закономерно. ...... Оракл сначала опускается на указанное число строк (и так получается, что уровней) из одного корня, потом переходит на другой корень и условие соединения сразу же становится ложным. если siblings нет то конечно упорядочивать не надо, и пункт пропускаем теперь насчет rownum, он присваивается в последнюю очередь (после Any remaining WHERE clause predicates are evaluated.) если есть сортировка то условие НЕ сразу становится ложным. kosourВ моих запросах практически не используются иерархические запросы, зато очень болезнены вопросы фильтрации. а от к Any remaining WHERE надо относится с уважением казалось бы "одинаковые" запрсы (с тотожнимы планами выполнения) select e.ename from emp e,dept d where e.deptno=d.deptno and DNAME<>'ACCOUNTING' и select e.ename from emp e,(select * from dept d where DNAME<>'ACCOUNTING') d where e.deptno=d.deptno поведут себя по разному, если добавить connect by ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2017, 16:12 |
|
||
|
sys_connect_by_path(rownum) с фильтрацией
|
|||
|---|---|---|---|
|
#18+
SY"иерархичнaя" сортировкa это тот случай когда ROWNUM присваивается после сортиpовки. Так-что мой пост это ответ на твой "Что?"Нет никакой "иерархичной" сортировки под капотом. Да, order siblings влияет на порядок выдачи детей каждого конкретного родителя (яное дело это имеет смысл если детей более одного для конкретного родителя) но создание этого порядка - это не отдельная сортировка над полученным набором. Просто в рекурсии вызывается что-то типа GetNextChild(), который может выдавать детей в разном порядке в зависимости от order siblings. Stax..если siblings нет то конечно упорядочивать не надо, и пункт пропускаемКак сказавно выше в этом же сообщении, Во-первых, siblings имеет смысл при наличии узлов с более чем одним потомком. Во-вторых, никего не упорядочевается, если понимать под упорядочеванием сортировку набора данных. Может изменяться порядок обхода (перебора дочерних записей). Stax..теперь насчет rownum, он присваивается в последнюю очередь (после Any remaining WHERE clause predicates are evaluated.)Абсолютно очевидно, что rownum инкрементируется только если строка прошла все проверки на попадание в результат. Об этом написал выше и я и Элик. Stax..если есть сортировка то условие НЕ сразу становится ложным.Это замечание относилось к конкретному примеру. Просьба еще раз пересмотреть его и если не согласен - привести контрпример. Что-то додумывать или подразумевать чего я не говорил и потом оспаривать - не очень конструктивный подход. Итого, если я правильно вас двоих понял, ваши утверждения, то выполняется обход дерева, выполняется сортировка, выполняется генерация rownum - это неверно. Выполняется только рекурсивный код и инкремент определенных псевдостобцов в запивимости от наступления некоторых условий. Это я написал в первом своем сообщении в этой теме. Ошибочно рассматривать генерацию псевдостолбцов в отрыве от построения иерархии. Stax..казалось бы "одинаковые" запрсы (с тотожнимы планами выполнения)Совсем плохой тон делать соединения и connect by на одном уровне. 10053 проясняет почему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2017, 16:44 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39421702&tid=1886258]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
152ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 450ms |

| 0 / 0 |
