database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 7231 게시물 읽기
No. 7231
MSSQL PIVOT 질문 입니다.
작성자
우롱
작성일
2021-01-15 10:17
조회수
1,826

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

이 글에 대한 댓글이 총 3건 있습니다.

3행~9행까지의 쿼리는  4백 3십만인데 이걸 불러오는 시간이 얼마나 될까요? 

쿼리 튜닝을 한다고 하더라도 이 시간이 최소의 시간이 되지 않을까 생각이 되네요. 


MY_ID들에 대한 텍스트를 만들고 동적쿼리를 만들면 가능은 할 것 같습니다. 




 

a님이 2021-01-15 10:34에 작성한 댓글입니다. Edit

3행~9행까지의 쿼리 4백3십만 현재 10초 가량 나오고 있습니다.


동적쿼리를 이용한다고 해도 PIVOT을 하려면 CONVERT를 해야해서 

다른 방법은 없나 여쭈어보았습니다.

우롱님이 2021-01-15 11:46에 작성한 댓글입니다. Edit

실시간 자료여만 하는지 ?

시간 단위로 집계를 배치 작업을 하고 집계자료를 피벗걸면 원하는 시간에 나오지 않을까 생각됩니다.


통계성 자료일때는 백데이타를 집계화 시켜 데이타량을 줄이고 처리하는게 좋을듯 합니다

지나가다가님이 2021-03-19 11:03에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
7234쿼리문 질문 좀 드리겠습니다 [1]
김재길
2021-04-21
1150
7233합계처럼 표기하고싶어요 [3]
김우성
2021-04-12
1228
7232트래픽량을 구하고 싶습니다. [2]
초보
2021-04-04
1149
7231MSSQL PIVOT 질문 입니다. [3]
우롱
2021-01-15
1826
7230행의 데이타를 원하는 만큼 나누어 여러개의 열로 표현할려 합니다. [6]
둥둥이
2021-01-05
1490
7229MSSQL 프로시져 템프테이블 문의 [1]
물어보자
2020-12-30
1360
7228쿼리 결과값을 다시 계산하고 싶어요 [5]
김우성
2020-12-27
1558
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다