본문 바로가기

데이터베이스

오라클 성능 개선 (190510)

 

 

 

 

스칼라 서브쿼리는 성능이 떨어진다. 

왜냐하면 스칼라 서브쿼리도 상관 서브 쿼리에 속하므로

지속해서 메인 쿼리문의 SYSTEM S를 방문한다.

 

 

 

 

FROM 절에 서브 쿼리 (인라인 뷰) 를 생성하여 성능을 개선할 수 있었다.

 

 

 

<결과>

 

// @ \\\\\ 경로 \ TEST.sql 

 

 

// DDL

CREATE  TABLE SYSTEM(  SYSTEM_ID    VARCHAR2(5), 
SYSTEM_NAME VARCHAR2(20) 
); 
INSERT INTO SYSTEM  VALUES('XXX','혜화DB'); 
INSERT INTO SYSTEM  VALUES('YYY','강남DB'); 
INSERT INTO SYSTEM  VALUES('ZZZ','영등포DB'); 
 
CREATE TABLE RESOURCE_USAGE(SYSTEM_ID   VARCHAR2(5), 
           RESOURCE_NAME VARCHAR2(10) 
); 
INSERT INTO RESOURCE_USAGE  VALUES('XXX','FTP'); 
INSERT INTO RESOURCE_USAGE  VALUES('YYY','FTP'); 
INSERT INTO RESOURCE_USAGE  VALUES('YYY','TELNET'); 
INSERT INTO RESOURCE_USAGE  VALUES('YYY','EMAIL'); 
COMMIT; 

 

// QUERY

SELECT SYSTEM_ID, SYSTEM_NAME,
       DECODE(COUNT(FTP_CNT), 1,'사용','미사용') AS FTP,
       DECODE(COUNT(TELNET_CNT), 1,'사용','미사용') AS TELNET,
       DECODE(COUNT(EMAIL_CNT), 1,'사용','미사용') AS EMAIL
FROM (
    SELECT S.SYSTEM_ID, S.SYSTEM_NAME, R.RESOURCE_NAME,
           DECODE(RESOURCE_NAME, 'FTP',1) AS FTP_CNT,
           DECODE(RESOURCE_NAME, 'TELNET',1) AS TELNET_CNT,
           DECODE(RESOURCE_NAME, 'EMAIL',1) AS EMAIL_CNT
    FROM SYSTEM S, RESOURCE_USAGE R
    WHERE S.SYSTEM_ID = R.SYSTEM_ID(+)
)
GROUP BY SYSTEM_ID, SYSTEM_NAME
ORDER BY SYSTEM_ID;

 

 

 

 

 

 

'데이터베이스' 카테고리의 다른 글

오라클과제 (190510)  (0) 2019.05.10
오라클실습 (190510)  (0) 2019.05.10
오라클실습 (190509)  (0) 2019.05.09
아스키코드, 유니코드  (0) 2019.05.08
오라클과제 (190508)  (0) 2019.05.08