EuGen пишет:И в чем разница? Рекурсивная процедура ничуть не лучше рекурсии на php.
Речь не о рекурсивной процедуре, а о рекурсивном запросе.
Но и рекурсивная процедура будет лучше кода на php, потому что в случае кода на php будет послали данные - получили - послали - получили (query-fetch-query-fetch).
EuGen пишет:50 JOIN - плохо, если данных действительно много. Нуу не факт. Они не будут тяжелее того же рекурсивного CTE или рекусривной процедуры на стороне СУБД. Там ведь у первой таблицы берется одна строка, и каждая следующая таблица приджойнивается по первичному ключу. И потом все 50 джойнов не будут выполняться. Когда мускуль в очередном джойне не найдет данных, ему уже нечего будет джойнить. Хотя я призадумался, поймет ли он это. Надо поэксперементировать. Заодно и скорость рекурсивной процедуры посмотрю)
EuGen пишет:То, что я предлагал с полным путем - вряд ли изящно тоже, так как в случае перемещения узла где-нибудь в середине пути будет очень много запросов на поиск и обновление (по сути обновить нужно будет все нижележащие поддеревья). Но всё-таки, по-моему, это редкое явление - перемещение узла, так что эту затрату можно не считать большим минусом.
|