Учитывая таблицу (AccountId, ParentId NULL), мы хотим иметь возможность быстро найти:
1. Основной родительский идентификатор (accountId, где ParentId равен нулю).
2. Все дети для данного идентификатора учетной записи.
С CTE это довольно просто. Однако мы не можем сохранить CTE в индексированном представлении, что снижает производительность. Мы обошли некоторые другие идеи, такие как сохранение пути (id1 / id2 / id3) в другом поле, но это выглядит как-то странно.
Мы думали о триггере, который сохранял бы «главный» идентификатор в каждой строке, но мы не уверены, как это сработает в середине цепочки (1 владеет 2, владеет 3, но затем 2 переходит к 7 ). Это также не решает запрос «найти всех детей».
Есть мысли? Мы используем SQL 2008 R2, но можем перейти на SQL 2012.