WITH tree_query AS (
SELECT
본인노드
,부모노드
, convert(varchar(255), 본인노드) sort
FROM 원본테이블
WHERE 최상위 부모노드 ='최상위부모노드값'
UNION ALL
SELECT
B.본인노드
,B.부모노드
, convert(varchar(255), convert(nvarchar,C.sort) + ' > ' + convert(varchar(255), B.본인노드)) sort
FROM
원본테이블 B
, tree_query C
WHERE B.부모노드= C.본인노드
)
SELECT * FROM tree_query order by sort
이렇게 재귀 쿼리를 통해서 값을 가져오는데 원하는 값은 잘나옵니다. 문제는 느리네요...
원본 테이블에 약 2000만 로우라 그런지 많이 느리네요 ㅠㅠ.. (2~3분)
원본 테이블를 약 3만 로우로 줄이면 2~3초내외로 떨어지긴합니다...
하지만 전체 테이블 비교로 실사용이 가능한정도로 시간을 낮추고 싶은데..
어떻게 튜닝할지 감이 안잡히네요...
(사실 제 생각으론 원본테이블의 범위를 줄이는 방법외에는 튜닝이 불가능하지 않을까 생각하고 있습니다.)
다른방식으로 시간을 줄일수 있을까요.. 예상시행계획은 index spool이 95%나 잡아 먹네요...