MSSQL PIVOT 질문 입니다. 0 0 1,631

by 우롱 [SQL Query] MSSQL PIVOT [2021.01.13 18:39:13]


MSSQL 에서 PIVOT 쿼리를 실행 중에 속도의 문제가 있어서 질문 드립니다.

1. 4,270,400개 행의 테이블(A)를 PIVOT 쿼리를 실행하여 27,200행으로 전환했습니다.

 - PIVOT되는 행에 비클러스형 포괄인덱스를 걸었습니다. (SELECT 되는 행을 포괄함)

CREATE NONCLUSTERED INDEX [A_inc] ON [dbo].[A]
([C_ID] ASC)
INCLUDE([V_ID],[M_IDs],[MY_ID])

 

쿼리

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 하는 방법이 없을까요?

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입