Вот статья на эту
тему
В итоге у тебя получится подобная структура:
+--+-------+--------+-----+------+-------
|id|name |parent |left |right |depth |
+--+-------+--------+-----+------+-------
Поясню: все элементы имеют идентификатор, родитель, соседние элементы (точки начала/конца нода), и уровень текущего нода. Т.о имея очень большую и глубокую структуру элементов, где используется интенсивный поиск, эффективней всего отталкиваться от элементов которые ближе всего находятся к искомому.