mysql рекурсив, варианты?

bay_ebook
На сайте с 28.05.2010
Offline
111
619

Добрый день

Вот сижу думаю ,как сделать лучше (сточки зрения нагрузки на сервер)

Есть таблица, примерно так

id

name

text

parent

parent - это id вышестоящего.

Количество вложение изначально не известно, но примерно не более 3-х (допускаю 4)

Какие варианты выборок, кроме цикла на пхп с рекурсией? Кто ,что посоветует? (ПС - в гугле уже искал, там либо ничего, либо то, что и так знаю, нужен именно свой опыт)

Спасибо.

Нужен прогер на php+mysql+понимание чужего кода? (/ru/forum/540660) Вам сюда PHP-шаман (http://php-shaman.pw/)
fa2m
На сайте с 07.09.2011
Offline
23
#1

Это прям извечный вопрос ))) Как-то даже встречал статью где довольно толково рассматривались несколько вариантов (но не помню уже где). С точки зрения нагрузки на сервер Ваш вариант правильный!

А на счёт варианта: ну можно обойтись вообще без ПХП! Всё одним запросом ))

Встречи в Днепре /ru/forum/736064 (/ru/forum/736064) Беклинк за копейку. Удобный сервис анализа обратных ссылок. (http://backlink.page-weight.ru/)
DV
На сайте с 01.05.2010
Offline
644
#2

Пару дней тоже волнует вопрос накладных расходов при разных обращениях к базе. Где можно почитать?

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
fa2m
На сайте с 07.09.2011
Offline
23
#3

Ну раз так нужно было, то даже порылся в истории просмотров (а это было не просто :) ) http://www.opennet.ru/docs/RUS/hierarchical_data/

---------- Добавлено 05.12.2012 в 15:07 ----------

DenisVS, может это не то, что Вам нужно было, а вот bay_ebookу, это точно будет интересно почитать.

IL
На сайте с 20.04.2007
Offline
435
#4
bay_ebook:
Какие варианты выборок, кроме цикла на пхп с рекурсией?

/ru/forum/756005 - не так давно обсуждалось.

Цикл на PHP + кэширование дерева (если целесообразно) - вариант вполне работоспособный.

Nested sets - тоже работает, нареканий нет.

Запросы по первичному ключу (в т.ч. WHERE id IN (1,3,4)) выполняются быстро - иногда даже смысла нет оптимизировать. И вообще, перед оптимизацией обязательно замеры проводить - иначе можно "промахнуться"

Ещё для экспериментов делал хранимками.. вроде получить всех потомков / всех родителей - вариант не прижился, т.к. разрешений хватает не на всех хостингах..

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий