И снова вопрос про деревья

NewStoic

Новичок
И снова вопрос про деревья

Вобщем посмотрел форум, почитал фак...
Везде почти одит и тот же метод вывода древовидной структуры(к примеру меню):
берётся функция и она рекурсивно делает выборку по родителю из БД для каждого элемента меню. Т.о. получается, если в самом меню хотябы 30 элементов, то и получается минимум 30 запросов к БД. А если у сайта посещаемость, опять же к примеру, 3000 уникальных _просмотров_ в сутки, то 30*3000 = 90000 запросов к БД в сутки, т.е. немногим чаще чем один запрос в секунду.

Всвязи с этим у миня вопрос. оптимален ли такой код для нагрузки на сервер? Если нет, то как его оптимизировать?
 

HraKK

Мудак
Команда форума
А не пробовал кешировать SQL запросы?

-~{}~ 28.08.06 17:22:

2) Где ты прочитал такой бред
Везде почти одит и тот же метод вывода древовидной структуры(к примеру меню):
берётся функция и она рекурсивно делает выборку по родителю из БД для каждого элемента меню
3) Что тебе мешает строить деревья средствами PHP, выбрав все меню 1 запросом?
 

Фанат

oncle terrible
Команда форума
пример чего?
выборки по первичному ключу? ты это самое и делаешь
 

NewStoic

Новичок
не, я понимаю, что можно и одним запросом, но как потом расфосовать это всё... с этим сложно.
 

Фанат

oncle terrible
Команда форума
ты гонишь.
что значит - "сложно", если этот самый расфасовочный код у тебя УЖЕ ЕСТЬ?!
 

Popoff

popoff.donetsk.ua
Везде почти одит и тот же метод вывода древовидной структуры(к примеру меню):
Специально только что подсчитал. В факе ровно десять разных способов загрузки дерева, которые работают по-разному, в зависимости от того, как хранится твоё дерево и какую часть дерева требуется загрузить. И лишь в некоторых из них количество запросов как-то зависит от размера загружаемого дерева, да и то, не от количества вершин.

-~{}~ 28.08.06 17:06:

Это если говорить о загрузки дерева из базы. А если говорить о выводе дерева в браузере пользователя, то там вообще никакие запросы к базе не нужны.
 

vonica

Новичок
Есть способ получить дерево с помощью одного запроса уже в готовом виде с помощью одного запроса, тоесть на php в цикле выводятся подряд строки там только пару if-ов.

NewStoic — плохо ищете
 

Фанат

oncle terrible
Команда форума
Дерево методом вложенных множеств НАФИГ не нужно, чтобы записать в базу пару десятков пунктов меню.
 

Фанат

oncle terrible
Команда форума
всё уже вверху написали.
задача настолько мизерная, что решать её можно как угодно.
Хоть одним запросом вытаскивать все записи и строить дерево в скрипте, хоть рекурсией все пункты вытаскивать (хотя рекурсия потребуется на самом деле только на ОДНОЙ странице - карта сайта. на остальных идёт два обычных запроса - основное меню и текущее подменю. то есть, говорить тут вообще не о чем)
 

Patrick (KT)

Guest
Только множества. :)

Фанат

А как ты таким образом будешь выводить дерево, скажем если текущий раздел 3 или 4 уровня.
 

Фанат

oncle terrible
Команда форума
точно так же, как если текуший раздел нулевгого уровня. а что?
 

Patrick (KT)

Guest
Фанат

Просто пару дней назад сталкнулся с проблемой вывода приоткрытого дерева. Вот и спросил. Кроме как рекурсией , я больше и не придумал, вот поэтому и только деревья.
 

Patrick (KT)

Guest
Нехотелось делать рекурсию. Получается что бы создать меню необходимо примерно 10 запросов, что не очень хорошо. Вместо 2 если использовать NS
 
Сверху