Другой подход называется «вложенным множеством», а не «вложенным деревом».
В любом случае, хорошая вещь о карте сайта в том, что вы знаете ее максимальную глубину. Я думаю, что проблема с моделью смежности заключается в том, что соответствующий SQL работает на одном уровне за раз, поэтому, если у вас есть «n» уровней, вам нужен цикл из «n» операторов SQL ... но я думаю (I я не уверен), что если вы заранее знаете максимальное значение «n», вы можете закодировать соответствующий SQL с фиксированным числом множественных уровней.
0,3 секунды для меня звучат как очень долгое время, чтобы вычислить 200 страниц, так что, вероятно, все в порядке.
Также карта сайта обновляется не очень часто; поэтому, даже если для извлечения из SQL требуется много времени, вы, вероятно, можете кэшировать извлеченное / вычисленное дерево в ОЗУ.
В качестве альтернативы, вместо того, чтобы беспокоиться о SQL для построения дерева, вы можете просто сохранить его как можно проще (в виде списка смежности), извлечь его из базы данных в виде простого набора строк и построить дерево в ОЗУ ( использование циклов в вашем языке программирования высокого уровня) вместо использования циклов в SQL для построения дерева с помощью операторов SQL.