Если прям очень нужен иерархический справочник, то стоит посмотреть, как реализованы те же категории продуктов (таблица EcoResCategory) в AX2012, в первую очередь с т.з. схемы данных и поддержки дополнительных служебных полей и таблиц:
- ссылка на родительский узел (поле EcoResCategory.ParentCategory) - куда же без нее
- уровень текущего узла (поле Level)
- левые и правые ключи для работы с моделью вложенных множеств (поля NestedSetLeft, NestedSetRight) и логика их обновления - используются для реляционной работы с деревом вместо рекурсивного обхода уровней, см. также Nested Set model
- соответствующие индексы, в т.ч. уникальные
Кроме этого, в AX2012 для Розницы в дереве иерархий могут быть сделаны "исключения", когда иерархические отношения настраиваются не в самом дереве, а в рамках тех или иных акций. Для поддержки таких исключений и упрощения реляционной работы с узлами дерева в модуле Розница есть вспомогательная таблица RetailCategoryContainmentLookup, содержащая все комбинации {узел, родительский узел}, и соотв. логика ее обновления. Также надо обратить внимание на то, что в иерархиях категорий, как и во многих других местах AX2012, первичным ключом записи является RecId, и все ссылки тоже сделаны по RecId.
В таком варианте (ссылки по RecId, модель вложенных множеств) SQL-запросы по категориям работают весьма шустро даже на очень больших и многоуровневых деревьях.