|
|
|
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/search_topic.php?author=%D0%9D%D0%B5%D0%B7%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9+%D0%B3%D0%BE%D1%81%D1%82%D1%8C&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
71ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 439ms |
| total: | 630ms |

| 0 / 0 |

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