боольшой TEMPORARY TABLE

Kirill

Новичок
боольшой TEMPORARY TABLE

есть список позиций, которые располагаются в виде дерева (наподобие сообщений в форумах). Структурируются позиции в виде дерева по двум полям в БД: id и id_parent (если id_parent=0 - корневой элемент). Дерево может быть неограниченной вложенности. Нужно вывести это список в виде дерева на сайте с постраничным разбиением
Ещё один важный момент - я не знаю ни структуры таблицы, ни сортировки, ни условия where - т.е. дочерний класс подсовывает массив с описанием полей, а я по этим полям строю запрос.

Что я хочу для простого (для меня) решения задачи:
1)Составляю запрос на выборку позиций.
2)По этому запросу создаю временную таблицу CREATE TEMPORARY TABLE tbl_name SELECT ну и далее мой запрос, ограниченный LIMIT 1
3)Затем очищаю таблицу.
4)Запускаю рекурсивную функцию для выбора дерева(т.е. сначала id_parent=0, затем запускается со значение id строки (чтобы детей выбрать) и т.д.), каждую строку заношу во временную таблицу + указываю глубину её вложенности в отдельное поле.
5)Затем обычные процедуры по подсчету кол-ва страниц и выбора нужной.
6)Выбираю из временной таблицы нужные строки.

Как можно ещё постранично вывести деревянную структуру?
Если таблица будет порядка 1000 строк - соответственно стока перекочует во временную - это сильно будет тормозитть?
2 и 3 пункт можно выкинуть, а в дочернем классе сделать обязательное описание временной таблицы.
 

Kirill

Новичок
яркий пример - форум скайлинка, например тема http://forum.skylink.ru/article.aspx?aid=38416 - древовидная структура разбирта на страницы.

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

Анатолий

Новичок
Kirill
Для постраничного вывода не нужна временная таблица.
LIMIT - вполне достаточно
 

Kirill

Новичок
если это не дерево - тогда лимита достаточно, а если это дерево - тогда тут рекурсивный select, как ты тут лимит поставишь?
 
Сверху