|
|
|
WITH RECURSIVE Работает примерно в 20 раз медленнее чем цикл ..
|
|||
|---|---|---|---|
|
#18+
имеем Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. работает 0.291 секунды и Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 13:00 |
|
||
|
WITH RECURSIVE Работает примерно в 20 раз медленнее чем цикл ..
|
|||
|---|---|---|---|
|
#18+
Сложно сказать, что Вы хотите доказать этим тестом. Загоните в дерево миллиончик записей с неплохим и разветвленным уровнем вложенности и тогда уже сравнивайте тесты циклов и рекурсивных запросов, вытаскивая от всего дерева до его участков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 13:14 |
|
||
|
WITH RECURSIVE Работает примерно в 20 раз медленнее чем цикл ..
|
|||
|---|---|---|---|
|
#18+
Я ничего не хочу доказать , я констатирую факт .. и записей в табличке около 100 тысяч .. и ветвление не больше 5 уровней (пока)..но вызовов одного из этих макросов - порядка 8 тысяч .. и вытаскивать надо именно ветку дерева (найти одного из родителей ) .. .. и задача не надуманная а конкретная .. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 13:43 |
|
||
|
WITH RECURSIVE Работает примерно в 20 раз медленнее чем цикл ..
|
|||
|---|---|---|---|
|
#18+
Если я правильно понял, то в вашем запросе с циклом у каждого предка может быть только один потомок, ID которого заносится в переменную p1 на каждом шаге итерации. Запрос с WITH REQURSIVE будет работать в ситуации, когда потомков у предка будет несколько (у вас стоит inner join). Если у предка всегда один потомок, попробуйте поиграться условием соединения изменив например его на left outer join, или соединение через where в подзапросе. На моих тестах, запрос c with reqursive работал гораздо быстрее в деревьях с большим уровнем вложенности (тысячи), а на деревьях с маленьким уровнем вложенности работал не медленнее чем вылизанный запрос на циклах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 12:21 |
|
||
|
WITH RECURSIVE Работает примерно в 20 раз медленнее чем цикл ..
|
|||
|---|---|---|---|
|
#18+
Ggg_oldЕсли я правильно понял, то в вашем запросе с циклом у каждого предка может быть только один потомок, ID которого заносится в переменную p1 на каждом шаге итерации. Запрос с WITH REQURSIVE будет работать в ситуации, когда потомков у предка будет несколько (у вас стоит inner join). Если у предка всегда один потомок, попробуйте поиграться условием соединения изменив например его на left outer join, или соединение через where в подзапросе. На моих тестах, запрос c with reqursive работал гораздо быстрее в деревьях с большим уровнем вложенности (тысячи), а на деревьях с маленьким уровнем вложенности работал не медленнее чем вылизанный запрос на циклах. Да нет тут не один потомок , а один родитель ..;-) Задача стояла найти предка (определенного типа) , который не известно за сколько сучков от данного листика .. Если конкретно то найти номер РабочейСтанции по номеру входящей в него железки . например видеокарты .. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 12:40 |
|
||
|
WITH RECURSIVE Работает примерно в 20 раз медленнее чем цикл ..
|
|||
|---|---|---|---|
|
#18+
ASCRUSСложно сказать, что Вы хотите доказать этим тестом. Загоните в дерево миллиончик записей с неплохим и разветвленным уровнем вложенности и тогда уже сравнивайте тесты циклов и рекурсивных запросов, вытаскивая от всего дерева до его участков.Полностью поддерживаю!!! WITH RECURSIVE - полностью показывает свои преимущества, над самописными функциями/процедурами при больших объёмах. Я утверждаю не голословно, так как поддерживаю БД, в которой листов примерно 40 млн., неговоря уже про остальные элементы древовидной структуры! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 10:18 |
|
||
|
|

start [/forum/topic.php?fid=55&gotonew=1&tid=2013877]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
144ms |
get topic data: |
9ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 261ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...