そのようなクエリが最適化される可能性があるかどうか疑問に思っています。私はそれを大幅に単純化しました。あなたはそれの核心を理解しています。
with Rec (Id,Name,ParentId)
as
(
select Id,Name,ParentId from Departments where ParentId is null
union all
select d.Id, d.Name, d.ParentId from Departments d join Rec r on
(d.ParentId=r.Id)
)
select q.* from (
select ROW_NUMBER() OVER (ORDER BY r.Id DESC) AS [ROW_NUMBER], r.* from Rec r
) as q
where q.[ROW_NUMBER] between 100 and 200
それが行うことは、下位の部門を階層的に照会し、それに対して範囲を設定することです。
私は巨大な実行計画に行き着いており、別の方法でそれを行うことができるかどうか疑問に思っています.
ありがとうございました。