Собственно вопрос по сабжу, как быстрее построить корни дерева. Смысл такой, есть датасет с данными, целиком строить дерево очень долго получается, поэтому узлы строятся "по требованию", соответственно отфильтровать датасет по parent_node_id и построить ветку проблем нет. а вот с корнями так красиво не получается, т.к. единого корня нет, в датасете данные могут фильтроваться и parent_node_id тоже не будет одинаковым.
Сейчас делаю следующим образом: создаю временный датасет, имеющий индекс по id и перегоняю все данные в него из исходного датасета, в цикле прохожу по всем его записям, и лукаплю parent_node_id = current_node_id, если ничего не найдено, тогда в итоговый датасет (содержащий узлы дерева), добавляю запись. Может есть способ оптимальнее? Как-то удалять из временного датасета строки, которые точно не надо добавлять, чтобы далее по ним не проходить...
