|
|
|
Firebird 2.1.3 vs Oracle 11g standart one vs Interbase 2007 vs Microsoft SQL Server 2008
|
|||
|---|---|---|---|
|
#18+
hvlad, я считаю, что никакого стека вызовов там не нужно. И я уже всё расказал, как это вижу. Другими словами, есть поток, читаем из него N-тый шаг, на его основе подготовляем N+й. Это всё. Цикл REPEAT UNTIL результат пуст. Что было на N-1-м шаге, результат которого, конечно, где-то копится, в данном контексте неважно. Для вас тоже неважно, вы ведь на глубину рекурсии поставили ограничение, а не на размер result set'а - значит, те структуры данных к нему напрямую не относятся. Да, DB2-шный запрос может зациклиться. Но можно писать запрос с "предохранителем". Заводят колонку-счётчик, на шаге 0 у неё значение 0, на шаге N - значение N, и ставим в условие WHERE счётчик <= MAXN. Это определённо не то же самое, что перекомпилировать СУБД, чтобы сменить значение константы, если она вдруг не устраивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2010, 21:45 |
|
||
|
Firebird 2.1.3 vs Oracle 11g standart one vs Interbase 2007 vs Microsoft SQL Server 2008
|
|||
|---|---|---|---|
|
#18+
Victor Metelitsahvlad, я считаю, что никакого стека вызовов там не нужно. И я уже всё расказал, как это вижу. Другими словами, есть поток, читаем из него N-тый шаг, на его основе подготовляем N+й. Это всё. Цикл REPEAT UNTIL результат пуст.Только в данном конкретном случае. Если DB2 превращает подобные запросы в цикл - честь ей и хвала. Firebird такого не умеет, для него все рекурсивные запросы в этом смысле одинаковы. Так что с точки зрения Firebird - это не цикл. В Firebird есть гораздо более эффективные методы написания таких циклов :) Victor MetelitsaДа, DB2-шный запрос может зациклиться. Но можно писать запрос с "предохранителем".Суть не в том, что можно поставить предохранитель. А в том, чтобы нормально отрабатывать запросы без предохранителя. Victor MetelitsaЭто определённо не то же самое, что перекомпилировать СУБД, чтобы сменить значение константы, если она вдруг не устраивает.Так она в основном теоретиков не устраивает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2010, 22:19 |
|
||
|
Firebird 2.1.3 vs Oracle 11g standart one vs Interbase 2007 vs Microsoft SQL Server 2008
|
|||
|---|---|---|---|
|
#18+
hvladТолько в данном конкретном случае. Если DB2 превращает подобные запросы в цикл - честь ей и хвала. Firebird такого не умеет, для него все рекурсивные запросы в этом смысле одинаковы. Так что с точки зрения Firebird - это не цикл. Это формально рекурсия, а по сути обыкновенный цикл, который вы зачем-то превратили в фактическую рекурсию и сами себе ограничили возможности. Ну, если вас это не волнует, то меня тем более. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2010, 22:32 |
|
||
|
Firebird 2.1.3 vs Oracle 11g standart one vs Interbase 2007 vs Microsoft SQL Server 2008
|
|||
|---|---|---|---|
|
#18+
Victor MetelitsahvladТолько в данном конкретном случае. Если DB2 превращает подобные запросы в цикл - честь ей и хвала. Firebird такого не умеет, для него все рекурсивные запросы в этом смысле одинаковы. Так что с точки зрения Firebird - это не цикл. Это формально рекурсия, а по сути обыкновенный цикл, который вы зачем-то превратили в фактическую рекурсию и сами себе ограничили возможности.Обход вырожденного дерева с одной веткой тоже цикл по сути. И что ? Причём, заметьте, это вы превратили рекурсию в цикл, а не я превратил цикл в рекурсию :) Что вы хотите мне доказать ? Что DB2 умеет переписывать в другом виде большее количество запросов, чем Firebird ? Так я это знаю. Или что-то другое ? Victor MetelitsaНу, если вас это не волнует, то меня тем более.А мне показалось, что вы разволновались :) Кстати, было бы интересно прочитать о том, что DB2 действительно умеет распознавать такие вырожденные случаи рекурсии. Есть ссылка ? А кто ещё умеет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2010, 22:59 |
|
||
|
|

start [/forum/topic.php?fid=35&startmsg=36540918&tid=1552823]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 142ms |

| 0 / 0 |
