1
이러한 쿼리가 잠재적으로 최적화 될 수 있는지 궁금합니다. 필자는 그것을 크게 단순화했으며, 핵심을 본다.SQL Server 2005의 SQL 쿼리 최적화 (CTE + 범위 함수)
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
중요한 작업은 계층 적으로 해당 부서를 쿼리 한 다음 해당 작업을 수행하는 것입니다.
거대한 실행 계획으로 끝나고 다른 방식으로 수행 할 수 있는지 궁금합니다.
감사합니다.
알렉스, 감사합니다. 이미 내 ParentId가 인덱싱되어 있고 내 옵션이 0.21 하위 트리 비용을 산출하지만 내 옵션은 0.17입니다. – Valentin
변경 사항이 도움이되지 않습니다. 저는이 단순화 된 사례 또는 원본 (복잡한, 실제) 쿼리에 대해 하위 트리의 비용을 비교 했습니까? 나는 결과가 크게 다를 수 있다고 생각한다. – AlexS