Я получил дерево с отложенной загрузкой и таблицу в БД под названием Папки, она содержит folderId и parentFolderId.
Итак, у меня есть все родительские папки при запуске, и если я хочу, чтобы дочерние элементы определенной папки, я просто развернул узел и
Select * from Folders where parentFolderId=?
достанет мне следующие узлы и так далее, все красиво.
ПРОБЛЕМА. Мое приложение предназначено для копирования структуры из таблицы в файловую систему. Если кто-то выберет узел, он расширит его непосредственных детей, но не внуков.
Запрос к каждой папке на предмет рекурсивности дочерних элементов был моей единственной идеей, но, учитывая, что в моей таблице 10000 строк, я делаю 10000 запросов ... это неправильно, как я могу сделать это правильно?
EDIT:
Я мог бы переформулировать это следующим образом: каков наилучший способ получить полное дерево с учетом родительского узла и всех папок в одной таблице, кроме рекурсивного запроса для детей, потому что в противном случае я запрашиваю БД 10000 раз
EDIT:
Как указано в этой статье http://threebit.net/tutorials/nestedset/tutorial1.html, моя ситуация такова:
Пользователь ищет все узлы под одним узлом.
Это большая проблема, так как большинство пользователей ожидают быстрого получения информации о поиске. Если вы используете какую-то систему EIS, где люди постоянно ищут глубоко вложенный набор реляционной информации, вас скоро уволят. Это означает, что мы должны найти алгоритм O (x) или более быстрый, или переосмыслить схему данных. Поскольку очень немногие администраторы баз данных могут позволить себе переписывать свои схемы по прихоти, вы должны придумать быстрый и простой способ улучшить производительность системы, не портя устаревшие компоненты. Вот почему вы хотите использовать модель вложенного набора.