S ohledem na výkon je nejlepší použít hierarchii intervalů:
https://en.wikipedia.org/wiki/Interval_treeKaždý uzel je určen intervalem [left, right].
Každý potomek pak má left potomka > left předka, a right potomka < right předka.
Potomky a předky pak poměrně rychle selectujete pomocí order by.
Pro předky prvku:
SELECT * FROM tree WHERE left < left_potomka ORDER BY left ASC;
Pro potomky:
SELECT * FROM tree WHERE left BETWEEN left_predka AND right_predka ORDER BY left ASC;