MSSQL 에서 PIVOT 쿼리를 실행 중에 속도의 문제가 있어서 질문 드립니다.
1. 4,270,400개 행의 테이블(A)를 PIVOT 쿼리를 실행하여 27,200행으로 전환했습니다.
- PIVOT되는 행에 비클러스형 포괄인덱스를 걸었습니다. (SELECT 되는 행을 포괄함)
?
1
2
3 |
CREATE NONCLUSTERED INDEX [A_inc] ON [dbo].[A]
([C_ID] ASC )
INCLUDE([V_ID],[M_IDs],[MY_ID]) |
쿼리
?
1
2
3
4
5
6
7
8
9
10
11
12
13 |
SELECT *
FROM (
SELECT C_ID
, M_IDs
, MY_ID
, V_ID
FROM A
WHERE C_ID = 1 --(4,270,400개 행)
) T
PIVOT (
MAX (V_ID) FOR MY_ID IN ( [1] ... [160] ) AS PVT |
결과 행 27,200
C_ID M_IDs 1 2 3 4 5 6 7 8 9 10 ... 160
1 M004 A B C D E F H T E NULL ... P
1 M012 A B C D E K Y R M O ... NULL
속도가 느려서 튜닝이 가능한지 알고 싶습니다.
20초 가량 걸리는데 1초 정도로 줄이고 싶습니다.
2. 현재는 PIVOT될 행을 문자열로 통일했습니다.
하지만 행이 여러 타입일 경우 타입을 그대로 가져와서 PIVOT 하는 방법이 없을까요? |