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 7179 게시물 읽기
No. 7179
SQL 갼소화
작성자
ohyouknow(ohyouknow)
작성일
2019-08-27 10:48
조회수
1,860

아래와 같은 SQL을 작성 했는데.... 아마도 "★★★"부분의 영향으로 부하가 걸리는듯 한데...
union을 간소화 하는 방법이 있을까요?
조언 감사드립니다.
==========================================================
select UMUPDT,UMUPTM,UMUPWS,UMUPPG,UMDENO,UMDGNO,UMKIGC,UMKTNC,UMSOC,UMSLC,UMSYMD,UMHINC,UMKISC,UMMEDC,UMJNRC,UMBRAC,UMURBC,UMSURY,UMTANK,UMORIT,UMKING,UMSTAN,UMARAR,UMDEKB,UMJUKB,UMCMNO,UMKENC,UMKUC,UMYBF1,UMYBF2,UMYBF3,UMYBF4,UMYBF5,"UMUPD@" as UMUPD,"UMSYM@" as UMSYM
  from (select ROW_NUMBER() OVER (PARTITION BY UMDENO, UMDGNO, UMKIGC, "UMSYM@" order byJOKEY desc) as rank,*
         from ((select * from com_tran.as_TUM1000J where UMDEKB = '11')
                 union all (select * from com_tran.as_TUM1000J where UMDEKB = '12') --★★★
                 union all (select * from com_tran.as_TUM1000J where UMDEKB = '21')
                 union all (select * from com_tran.as_TUM1000J where UMDEKB = '22')
                 union all (select * from com_tran.as_TUM1000J where UMDEKB = '23')
                 union all (select * from com_tran.as_TUM1000J where UMDEKB = '24')) b
         where ISREMOVED = '0'
           and "UMSYM@" = 20190815
           and UMHINC in (select HNC_CD
                            from com_stage.C1_MVMA2000
                           where KTBN <> ''
                             and ISREMOVED = '0'
                             and ERRF_CD <> 'D'
                             and DEL_FLG = '0'
                             and BRAC_CD in ('CQ6A','CQ6B','CQ6P','CQ61','CQ62','CQ63','CQ64','CQ68','YH21','YH24','YH25'))
       ) a
where a.rank = 1
  and (JOENTT is null or JOENTT <> 'DL')
order by "
UMSYM@",UMKIGC,UMKTNC,UMDENO,UMDGNO

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

SELECT *
  FROM (SELECT ROW_NUMBER() OVER(
               PARTITION BY umdeno, umdgno, umkigc, "UMSYM@"
               ORDER BY jokey DESC) AS rk  -- rank 등의 예약어 사용 지양.
             , b.*
          FROM com_tran.as_tum1000j b
         WHERE isremoved = '0'
           AND "UMSYM@"  = 20190815
           AND umdekb IN ('11', '12', '21', '22', '23', '24')  -- 요기.
           AND umhinc IN (SELECT hnc_cd
                            FROM com_stage.c1_mvma2000
                           WHERE ktbn     <> ''
                             AND isremoved = '0'
                             AND errf_cd  <> 'd'
                             AND del_flg   = '0'
                             AND brac_cd  IN ('cq6a','cq6b','cq6p','cq61'
                                             ,'cq62','cq63','cq64','cq68'
                                             ,'yh21','yh24','yh25')
                          )
        ) a
 WHERE a.rk = 1
   AND ISNULL(joentt, '') <> 'DL'
 ORDER BY "UMSYM@", umkigc, umktnc, umdeno, umdgno
;

마농(manon94)님이 2019-08-27 15:34에 작성한 댓글입니다.
이 댓글은 2019-08-27 15:36에 마지막으로 수정되었습니다.

마농님

매번 친절한 답변 감사드립니다.

DBA의수호천사라는 이름이 어울릴 듯 합니다.

다시한번 감사 드립니다.

 

ohyouknow님이 2019-08-28 13:35에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
7183[쿼리문의] 1초단위 데이터를 5초간격 조회. [2]
영일
2019-09-02
1906
7181SQL 조건 간소화 [2]
ohyouknow
2019-08-28
1787
7180데이터 변경이력 조회 쿼리 문의 [3]
k62511
2019-08-27
1920
7179SQL 갼소화 [2]
ohyouknow
2019-08-27
1860
7178JDBC에서 executeBatch()를 사용해서 데이터를 INSERT할 경우
권기혁
2019-08-19
1780
7177Restore 오류 관련 해결 방법 문의 [2]
박판규
2019-08-01
1873
7176해당날짜 시간별 사람별 카운팅
김지철
2019-07-19
1823
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.052초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다