Oracle DBMS(14)
-
[SQL 튜닝 실습 2-6] 세미 조인 튜닝 개념
1) 세미 조인 조인 시 특정 조건에 부합되면 더 이상 연산 수행하지 않는 것을 뜻함 SQL문에서 EXISTS 또는 NOT EXISTS 를 사용하면 옵티마이저는 세미 조인 사용 여부를 판단하게 된다 세미 조인은 조인방식에 따라 중첩 루프 세미 조인과 해시 세미 조인으로 나뉜다 특정 조건에 맞으면 더 이상 반복하지 않고 멈추기때문에 성능상 아주 유리하다 2) EXISTS문과 NOT EXISTS문 각각 특정 데이터가 존재하거나 존재하지 않는 데이터를 추출할 때 사용한다 세미 조인은 EXISTS문과 NOT EXISTS문 이 두가지 유형의 SQL로 처리할 때 유용하게 사용할 수 있다. 조인 유형 SQL문 힌트 중첩 루프 세미 조인 EXISTS NL_SJ 해시 세미 조인 EXISTS HASH_SJ 중첩 루프 안티..
2020.01.28 -
[SQL 튜닝 실습 2-5] 해시 조인 튜닝 2
인라인 뷰를 이용한 해시 조인으로 성능 극대화하기 실습 준비 테이블 생성 : TB_PRDT 생성 CREATE TABLE TB_PRDT ( PRDT_CD VARCHAR2(6), --상품코드 PRDT_NM VARCHAR2(50), --상품명 INST_DTM DATE, --입력일시 INST_ID VARCHAR2(50) --입력자 ); 테이블 생성 : TB_PRDT_SALE_DAY CREATE TABLE TB_PRDT_SALE_DAY ( SALE_NO VARCHAR2(10), --판매번호 SALE_DT VARCHAR2(8), --판매일자 SALE_TM VARCHAR2(6), --판매시간 SALE_CNT NUMBER(9), --판매수 SALE_AMT NUMBER(9), --판매금액 PRDT_CD VARCHAR2(..
2020.01.27 -
[SQL 튜닝 실습 2-4] 해시 조인 튜닝 1
해시 조언으로 성능 극대화하기 실습 준비 테이블 생성 : TB_PRDT CREATE TABLE TB_PRDT ( PRDT_CD VARCHAR2(6), --상품코드 PRDT_NM VARCHAR2(50), --상품명 REL_DT VARCHAR2(8), --출시일자 COST_AMT NUMBER(15), --원가금액 INST_DTM DATE, --입력시간 INST_ID VARCHAR2(50), --입력자ID UPDT_DTM DATE, --수정시간 UPDT_ID VARCHAR2(5) --수정자ID ); 테이블 생성 : TB_ORD CREATE TABLE TB_ORD ( ORD_NO VARCHAR2(10), --주문번호 ORD_DT VARCHAR2(8), --주문일자 ORD_NM VARCHAR2(150), --주문..
2020.01.27 -
[SQL 튜닝 실습 2-3] 해시 조인 튜닝 개념
1) 해시 조인 두개의 테이블을 조인한다고 가정할 때, 작은 집합을 빠르게 읽어서 해시 테이블을 생성해서 해시 영역을 저장한 후, 큰 테이블을 순차적으로 읽으면서 해시 함수에 입력 값을 줘서 해시영역에 있는 해시테이블(작은 집합) 내에 해당 값이 존재하면, 조인 집합에 저장해서 원하는 조인 결과를 도출해내는 방식 일반적으로 대용량 테이블의 조인 연산에서는 해시 조인 방식이 중첩 루프 조인이나 소트 머지 조인 방식보다 훨씬 효율적이다 즉, 작은 집합과 큰 집합이 있는 상황에서 오라클의 해시 조인은 극적인 성능 향상을 이뤄냅니다 근데, 해시 조인은 대용량 테이블 조인 시에 메모리가 많이 필요하다 해시 조인의 성능을 극대화하려면 오라클 DBMS에 대한 메모리 관리도 신경을 써야 한다 2) 해시 조인의 특성 *..
2020.01.27 -
[SQL 튜닝 실습 2-2] 중첩 루프 조인 튜닝
실습 준비 테이블 생성 : TB_CUST CREATE TABLE TB_CUST ( CUST_ID VARCHAR2(10), --고객ID CUST_NM VARCHAR2(50), --고객명 BIRTH_DT VARCHAR2(8), --생일 SEX VARCHAR2(2), --성별 PHONE_NO VARCHAR2(11), --폰번호 JOIN_DT VARCHAR2(8), --가입일자 INST_DTM DATE, --입력일시 INST_ID VARCHAR2(50), --입력자ID UPDT_DTM DATE, --수정일시 UPDT_ID VARCHAR2(50) -- 수정자ID ); 테이블 생성 : TB_ORD CREATE TABLE TB_ORD ( ORD_NO VARCHAR2(10), --주문번호 ORD_DT VARCHAR2(..
2020.01.27 -
[SQL 튜닝 실습 2-1] 중첩 루프 조인 튜닝 개념
1) 중첩 루프 조인 프로그래밍에서 중첩 반복문이라고 생각하면 되는데, 한건 한건씩 찾아나가기 때문에 대용량 테이블을 중첩 루프 조인한다면 성능에 큰 부하를 주게된다. NOTE : 중첩 루프 조인의 원리 반복 : A테이블에서 조건에 맞는 행을 스캔 반복 : B테이블에서 조건에 맞는 행을 스캔 A 테이블과 B 테이블의 조인 조건이 일치한다면 해당 행을 결과 집합에 포함 2) Outer 테이블과 Inner 테이블 Outer 테이블 중첩 루프 조인에서 제일 먼저 스캔하는 테이블로, Driving 테이블이라고도 한다. Outer 테이블의 스캔 건수가 적을수록 중첩 루프 조인 시 유리하다 Outer 테이블의 스캔 결과 건수만큼 Inner 테이블에 대한 스캔을 반복하기 때문이다. Inner 테이블 중첩 루프 조인에..
2020.01.27