SlideShare a Scribd company logo
1 of 10
오라클힌트/튜닝 #25
Sub Query Factoring
WITH 구문, _WITH_SUBQUERY 파라미터
Materialize, Inline 힌트구문
이종철, 탑크리에듀(www.topcredu.co.kr)
실습코드 및 영상다시보기는 다음 URL에서 가능합니다.
http://ojc.asia
Subquery Factoring
• Subquery Factoring은 WITH구문을 이용하여 복잡한 쿼리문을 임시테이블에 저장하여
이를 이용하는 방법이다. 반복되는 SELECT구문을 WITH구문에 한번만 정의하여 사용하
여 쿼리 성능을 향상 시킬 수 있는 방법이다.
• With구문은 SQL-99 표준이며 오라클에서는 9.2에 도입되었다.
• 복잡한 인라인뷰등을 WITH구문을 이용하여 한곳으로 몰아 가독성 또한 좋다.
• 오라클 옵티마이저는 WITH구문의 내용이 복잡할 경우 서브쿼리를 Global Temporary
Table에 넣어 WITH구 블록이 여러곳에서 참조되는 경우 효율적으로 구성할 수도 있다.
• Materialize 힌트는 서브쿼리 블록을 Global Temporary Table로 만들어서 사용하라는
힌트이며 Inline 힌트는 반대로 해당 WITH 쿼리블럭을 메인 쿼리블럭에 넣어 그대로 실
행하라는 힌트이다.
이종철, 탑크리에듀(www.topcredu.co.kr)
_WITH_SUBQUERY 파라미터
• 오라클 11g 부터 사용가능한 파라미터로 WITH구문의 서브쿼리를 처리하는 방법을 지정
한다.
• OPTIMIZER : 옵티마이저가 알아서 처리(Default)
• MATERIALIZE : /*+ Materialize */ 힌트를 사용한 것과 같이 쿼리블럭을 Global Temporary Table을 만들
어서 처리한다. 쿼리블럭이 여러군데 사용되는 경우 장점이 있다.
• INLINEL : /*+ Inline */ 힌트를 사용한 것과 동일하며 쿼리블럭을 임시 테이블로 만들지 않고 라인 안에
넣어서 그대로 최적화를 진행한다.
• SQL> alter session set "_with_subquery" = materialize;
• SQL> alter session set "_with_subquery" = inline;
• SQL> alter session set "_with_subquery" = optimizer;
• SQL> show parameter withstring OPTIMIZER
[파라미터 확인 방법, SYS계정에서 실행]
SELECT A.KSPPINM "Parameter"
,B.KSPPSTVL "Session Value"
,C.KSPPSTVL "Instance Value"
FROM X$KSPPI A, X$KSPPCV B, X$KSPPSV C
WHERE A.KSPPINM LIKE '%with%'
AND A.INDX = B.INDX
AND A.INDX = C.INDX ;
이종철, 탑크리에듀(www.topcredu.co.kr)
Subquery Factoring 예문 - 1
-- WITH구문을 사용하지 않은 쿼리구문, 각 쿼리블럭을 별도의 뷰로 실행시켜 중첩루프 조인 한다.
-- 4.6초
SELECT e1.avgsal "Manager Average", e2.avgsal "Salesman Average", e3.avgsal "Clerk Average"
FROM (SELECT avg(sal) avgsal FROM myemp1
WHERE job = 'MANAGER') e1,
(SELECT job, avg(sal) avgsal FROM myemp1
WHERE job = 'SALESMAN') e2,
(SELECT job, avg(sal) avgsal FROM myemp1
WHERE job = 'CLERK') e3 ;
이종철, 탑크리에듀(www.topcredu.co.kr)
Subquery Factoring 예문 - 2
-- WITH구문을 사용한 쿼리구문, 옵티마이저가 알아서 임시테이블로 생성한다. 3초
WITH avgsal AS (SELECT job, avg(sal) avgsal
FROM myemp1 GROUP BY job)
SELECT e1.avgsal "Manager Average",
e2.avgsal "Salesman Average",
e3.avgsal "Clerk Average"
FROM avgsal e1, avgsal e2, avgsal e3
WHERE e1.job = 'MANAGER'
AND e2.job = 'SALESMAN'
AND e3.job = 'CLERK';
이종철, 탑크리에듀(www.topcredu.co.kr)
Subquery Factoring 예문 - 3
-- WITH구문에 Materialize 힌트를 사용(임시 테이블을 만들도록 강제), 3초
WITH avgsal AS (SELECT /*+ Materialize */
job, avg(sal) avgsal
FROM myemp1 GROUP BY job)
SELECT e1.avgsal "Manager Average",
e2.avgsal "Salesman Average",
e3.avgsal "Clerk Average"
FROM avgsal e1, avgsal e2, avgsal e3
WHERE e1.job = 'MANAGER'
AND e2.job = 'SALESMAN'
AND e3.job = 'CLERK';
이종철, 탑크리에듀(www.topcredu.co.kr)
Subquery Factoring 예문 - 4
-- WITH구문에 Inline 힌트를 사용하여 WITH구의 쿼리를 메인쿼리에 삽입(inline)하여 실행하도록
-- 4.6초, 머지조인을 한다.
WITH avgsal AS (SELECT /*+ Inline */
job, avg(sal) avgsal
FROM myemp1 GROUP BY job)
SELECT e1.avgsal "Manager Average",
e2.avgsal "Salesman Average",
e3.avgsal "Clerk Average"
FROM avgsal e1, avgsal e2, avgsal e3
WHERE e1.job = 'MANAGER'
AND e2.job = 'SALESMAN‘ AND e3.job = 'CLERK';
이종철, 탑크리에듀(www.topcredu.co.kr)
Subquery Factoring 예문 - 5
-- WITH구문에 Inline 힌트를 사용하고 USE_NL힌트를 사용하여 WITH구 블록의 뷰를 중첩루프조
인하도록 4.9초, 중첩루프조인 한다.
WITH avgsal AS (SELECT /*+ Inline */
job, avg(sal) avgsal
FROM myemp1 GROUP BY job)
SELECT /*+ use_nl(e2 e3) */
e1.avgsal "Manager Average",
e2.avgsal "Salesman Average",
e3.avgsal "Clerk Average"
FROM avgsal e1, avgsal e2, avgsal e3
WHERE e1.job = 'MANAGER'
AND e2.job = 'SALESMAN‘ AND e3.job = 'CLERK'; 이종철, 탑크리에듀(www.topcredu.co.kr)
[탑크리에듀] 오라클 힌트 SQL튜닝 강좌
PL/SQL단기속성(1일완성)SQL힌트/튜닝(단기2일교육)SQL기초과정

More Related Content

What's hot

암달의 법칙과 쿼리튜닝 기초
암달의 법칙과 쿼리튜닝 기초암달의 법칙과 쿼리튜닝 기초
암달의 법칙과 쿼리튜닝 기초Hoyoung Jung
 
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차희동 강
 
효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차희동 강
 
개발자들이 흔히 실수하는 SQL 7가지
개발자들이 흔히 실수하는 SQL 7가지개발자들이 흔히 실수하는 SQL 7가지
개발자들이 흔히 실수하는 SQL 7가지JungGeun Lee
 
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
효율적인Sql작성방법 4주차
효율적인Sql작성방법 4주차효율적인Sql작성방법 4주차
효율적인Sql작성방법 4주차희동 강
 
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
효율적인 SQL 작성방법 1주차
효율적인 SQL 작성방법 1주차효율적인 SQL 작성방법 1주차
효율적인 SQL 작성방법 1주차희동 강
 
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...탑크리에듀(구로디지털단지역3번출구 2분거리)
 

What's hot (20)

암달의 법칙과 쿼리튜닝 기초
암달의 법칙과 쿼리튜닝 기초암달의 법칙과 쿼리튜닝 기초
암달의 법칙과 쿼리튜닝 기초
 
단일행 서브쿼리
단일행 서브쿼리단일행 서브쿼리
단일행 서브쿼리
 
Any(some),all,exists(2)
Any(some),all,exists(2)Any(some),all,exists(2)
Any(some),all,exists(2)
 
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
 
복수행 서브쿼리
복수행 서브쿼리복수행 서브쿼리
복수행 서브쿼리
 
효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차
 
Sql기초강좌2_SET AUTOTRACE_SQL교육
Sql기초강좌2_SET AUTOTRACE_SQL교육Sql기초강좌2_SET AUTOTRACE_SQL교육
Sql기초강좌2_SET AUTOTRACE_SQL교육
 
효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차
 
개발자들이 흔히 실수하는 SQL 7가지
개발자들이 흔히 실수하는 SQL 7가지개발자들이 흔히 실수하는 SQL 7가지
개발자들이 흔히 실수하는 SQL 7가지
 
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
 
효율적인Sql작성방법 4주차
효율적인Sql작성방법 4주차효율적인Sql작성방법 4주차
효율적인Sql작성방법 4주차
 
Sql기초강좌_select기본
Sql기초강좌_select기본Sql기초강좌_select기본
Sql기초강좌_select기본
 
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
 
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
 
1.7 튜닝의도구 sql autorace
1.7 튜닝의도구 sql autorace1.7 튜닝의도구 sql autorace
1.7 튜닝의도구 sql autorace
 
효율적인 SQL 작성방법 1주차
효율적인 SQL 작성방법 1주차효율적인 SQL 작성방법 1주차
효율적인 SQL 작성방법 1주차
 
3.2 실행계획 sql 연산 (concatenation)
3.2 실행계획 sql 연산 (concatenation)3.2 실행계획 sql 연산 (concatenation)
3.2 실행계획 sql 연산 (concatenation)
 
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
 
(스프링JDBC와 Spring Data JPA비교)Spring JDBC와 JPA를 간단한 CRUD 예제로 만들면서 비교해보자.
(스프링JDBC와 Spring Data JPA비교)Spring JDBC와 JPA를 간단한 CRUD 예제로  만들면서 비교해보자.(스프링JDBC와 Spring Data JPA비교)Spring JDBC와 JPA를 간단한 CRUD 예제로  만들면서 비교해보자.
(스프링JDBC와 Spring Data JPA비교)Spring JDBC와 JPA를 간단한 CRUD 예제로 만들면서 비교해보자.
 

Similar to (오라클힌트,SQL튜닝강좌#25)오라클WITH구문,서브쿼리 팩토링

제1회 Tech Net Sql Server 2005 T Sql Enhancements
제1회 Tech Net Sql Server 2005 T Sql Enhancements제1회 Tech Net Sql Server 2005 T Sql Enhancements
제1회 Tech Net Sql Server 2005 T Sql Enhancementsbeamofhope
 
SQL Profile을 이용한 SQL Plan 변경_Wh oracle
SQL Profile을 이용한 SQL Plan 변경_Wh oracleSQL Profile을 이용한 SQL Plan 변경_Wh oracle
SQL Profile을 이용한 SQL Plan 변경_Wh oracle엑셈
 
(SQL튜닝을위한 오라클힌트강좌)옵티마이저 Query Transformation, OR확장이란? Or expansion, use_conca...
(SQL튜닝을위한 오라클힌트강좌)옵티마이저 Query Transformation, OR확장이란? Or expansion, use_conca...(SQL튜닝을위한 오라클힌트강좌)옵티마이저 Query Transformation, OR확장이란? Or expansion, use_conca...
(SQL튜닝을위한 오라클힌트강좌)옵티마이저 Query Transformation, OR확장이란? Or expansion, use_conca...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
My sql tde kr_v1.0
My sql tde kr_v1.0My sql tde kr_v1.0
My sql tde kr_v1.0Sumi Ryu
 
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀EXEM
 
SPA(SQL Performance Analyze)를 이용한 통계 정보 수집_Wh oracle
SPA(SQL Performance Analyze)를 이용한 통계 정보 수집_Wh oracleSPA(SQL Performance Analyze)를 이용한 통계 정보 수집_Wh oracle
SPA(SQL Performance Analyze)를 이용한 통계 정보 수집_Wh oracle엑셈
 
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle엑셈
 
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀EXEM
 
생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작DACON AI 데이콘
 
SQL PASS Korea Seminar Season 2 발표 - Azure SQL database의 Geo Replica와 Managed...
SQL PASS Korea Seminar Season 2 발표 - Azure SQL database의 Geo Replica와 Managed...SQL PASS Korea Seminar Season 2 발표 - Azure SQL database의 Geo Replica와 Managed...
SQL PASS Korea Seminar Season 2 발표 - Azure SQL database의 Geo Replica와 Managed...JungwooKim41
 
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Javajigi Jaesung
 
HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3J B
 

Similar to (오라클힌트,SQL튜닝강좌#25)오라클WITH구문,서브쿼리 팩토링 (14)

제1회 Tech Net Sql Server 2005 T Sql Enhancements
제1회 Tech Net Sql Server 2005 T Sql Enhancements제1회 Tech Net Sql Server 2005 T Sql Enhancements
제1회 Tech Net Sql Server 2005 T Sql Enhancements
 
SQL Profile을 이용한 SQL Plan 변경_Wh oracle
SQL Profile을 이용한 SQL Plan 변경_Wh oracleSQL Profile을 이용한 SQL Plan 변경_Wh oracle
SQL Profile을 이용한 SQL Plan 변경_Wh oracle
 
(SQL튜닝을위한 오라클힌트강좌)옵티마이저 Query Transformation, OR확장이란? Or expansion, use_conca...
(SQL튜닝을위한 오라클힌트강좌)옵티마이저 Query Transformation, OR확장이란? Or expansion, use_conca...(SQL튜닝을위한 오라클힌트강좌)옵티마이저 Query Transformation, OR확장이란? Or expansion, use_conca...
(SQL튜닝을위한 오라클힌트강좌)옵티마이저 Query Transformation, OR확장이란? Or expansion, use_conca...
 
My sql tde kr_v1.0
My sql tde kr_v1.0My sql tde kr_v1.0
My sql tde kr_v1.0
 
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
 
3.4 실행계획 SQL 연산 (Hash Anti-Join)
3.4 실행계획 SQL 연산 (Hash Anti-Join)3.4 실행계획 SQL 연산 (Hash Anti-Join)
3.4 실행계획 SQL 연산 (Hash Anti-Join)
 
SPA(SQL Performance Analyze)를 이용한 통계 정보 수집_Wh oracle
SPA(SQL Performance Analyze)를 이용한 통계 정보 수집_Wh oracleSPA(SQL Performance Analyze)를 이용한 통계 정보 수집_Wh oracle
SPA(SQL Performance Analyze)를 이용한 통계 정보 수집_Wh oracle
 
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
 
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
 
3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)
3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)
3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)
 
생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작
 
SQL PASS Korea Seminar Season 2 발표 - Azure SQL database의 Geo Replica와 Managed...
SQL PASS Korea Seminar Season 2 발표 - Azure SQL database의 Geo Replica와 Managed...SQL PASS Korea Seminar Season 2 발표 - Azure SQL database의 Geo Replica와 Managed...
SQL PASS Korea Seminar Season 2 발표 - Azure SQL database의 Geo Replica와 Managed...
 
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
 
HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3
 

More from 탑크리에듀(구로디지털단지역3번출구 2분거리)

[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]탑크리에듀(구로디지털단지역3번출구 2분거리)
 

More from 탑크리에듀(구로디지털단지역3번출구 2분거리) (20)

자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
 
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
 
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
 
[IT교육/IT학원]Develope를 위한 IT실무교육
[IT교육/IT학원]Develope를 위한 IT실무교육[IT교육/IT학원]Develope를 위한 IT실무교육
[IT교육/IT학원]Develope를 위한 IT실무교육
 
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
 
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
 
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
 
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
 
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
 
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
 
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
 
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
 
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
 
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
 
2. xamarin.android 2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
2. xamarin.android  2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...2. xamarin.android  2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
2. xamarin.android 2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
 

(오라클힌트,SQL튜닝강좌#25)오라클WITH구문,서브쿼리 팩토링

  • 1. 오라클힌트/튜닝 #25 Sub Query Factoring WITH 구문, _WITH_SUBQUERY 파라미터 Materialize, Inline 힌트구문 이종철, 탑크리에듀(www.topcredu.co.kr)
  • 2. 실습코드 및 영상다시보기는 다음 URL에서 가능합니다. http://ojc.asia
  • 3. Subquery Factoring • Subquery Factoring은 WITH구문을 이용하여 복잡한 쿼리문을 임시테이블에 저장하여 이를 이용하는 방법이다. 반복되는 SELECT구문을 WITH구문에 한번만 정의하여 사용하 여 쿼리 성능을 향상 시킬 수 있는 방법이다. • With구문은 SQL-99 표준이며 오라클에서는 9.2에 도입되었다. • 복잡한 인라인뷰등을 WITH구문을 이용하여 한곳으로 몰아 가독성 또한 좋다. • 오라클 옵티마이저는 WITH구문의 내용이 복잡할 경우 서브쿼리를 Global Temporary Table에 넣어 WITH구 블록이 여러곳에서 참조되는 경우 효율적으로 구성할 수도 있다. • Materialize 힌트는 서브쿼리 블록을 Global Temporary Table로 만들어서 사용하라는 힌트이며 Inline 힌트는 반대로 해당 WITH 쿼리블럭을 메인 쿼리블럭에 넣어 그대로 실 행하라는 힌트이다. 이종철, 탑크리에듀(www.topcredu.co.kr)
  • 4. _WITH_SUBQUERY 파라미터 • 오라클 11g 부터 사용가능한 파라미터로 WITH구문의 서브쿼리를 처리하는 방법을 지정 한다. • OPTIMIZER : 옵티마이저가 알아서 처리(Default) • MATERIALIZE : /*+ Materialize */ 힌트를 사용한 것과 같이 쿼리블럭을 Global Temporary Table을 만들 어서 처리한다. 쿼리블럭이 여러군데 사용되는 경우 장점이 있다. • INLINEL : /*+ Inline */ 힌트를 사용한 것과 동일하며 쿼리블럭을 임시 테이블로 만들지 않고 라인 안에 넣어서 그대로 최적화를 진행한다. • SQL> alter session set "_with_subquery" = materialize; • SQL> alter session set "_with_subquery" = inline; • SQL> alter session set "_with_subquery" = optimizer; • SQL> show parameter withstring OPTIMIZER [파라미터 확인 방법, SYS계정에서 실행] SELECT A.KSPPINM "Parameter" ,B.KSPPSTVL "Session Value" ,C.KSPPSTVL "Instance Value" FROM X$KSPPI A, X$KSPPCV B, X$KSPPSV C WHERE A.KSPPINM LIKE '%with%' AND A.INDX = B.INDX AND A.INDX = C.INDX ; 이종철, 탑크리에듀(www.topcredu.co.kr)
  • 5. Subquery Factoring 예문 - 1 -- WITH구문을 사용하지 않은 쿼리구문, 각 쿼리블럭을 별도의 뷰로 실행시켜 중첩루프 조인 한다. -- 4.6초 SELECT e1.avgsal "Manager Average", e2.avgsal "Salesman Average", e3.avgsal "Clerk Average" FROM (SELECT avg(sal) avgsal FROM myemp1 WHERE job = 'MANAGER') e1, (SELECT job, avg(sal) avgsal FROM myemp1 WHERE job = 'SALESMAN') e2, (SELECT job, avg(sal) avgsal FROM myemp1 WHERE job = 'CLERK') e3 ; 이종철, 탑크리에듀(www.topcredu.co.kr)
  • 6. Subquery Factoring 예문 - 2 -- WITH구문을 사용한 쿼리구문, 옵티마이저가 알아서 임시테이블로 생성한다. 3초 WITH avgsal AS (SELECT job, avg(sal) avgsal FROM myemp1 GROUP BY job) SELECT e1.avgsal "Manager Average", e2.avgsal "Salesman Average", e3.avgsal "Clerk Average" FROM avgsal e1, avgsal e2, avgsal e3 WHERE e1.job = 'MANAGER' AND e2.job = 'SALESMAN' AND e3.job = 'CLERK'; 이종철, 탑크리에듀(www.topcredu.co.kr)
  • 7. Subquery Factoring 예문 - 3 -- WITH구문에 Materialize 힌트를 사용(임시 테이블을 만들도록 강제), 3초 WITH avgsal AS (SELECT /*+ Materialize */ job, avg(sal) avgsal FROM myemp1 GROUP BY job) SELECT e1.avgsal "Manager Average", e2.avgsal "Salesman Average", e3.avgsal "Clerk Average" FROM avgsal e1, avgsal e2, avgsal e3 WHERE e1.job = 'MANAGER' AND e2.job = 'SALESMAN' AND e3.job = 'CLERK'; 이종철, 탑크리에듀(www.topcredu.co.kr)
  • 8. Subquery Factoring 예문 - 4 -- WITH구문에 Inline 힌트를 사용하여 WITH구의 쿼리를 메인쿼리에 삽입(inline)하여 실행하도록 -- 4.6초, 머지조인을 한다. WITH avgsal AS (SELECT /*+ Inline */ job, avg(sal) avgsal FROM myemp1 GROUP BY job) SELECT e1.avgsal "Manager Average", e2.avgsal "Salesman Average", e3.avgsal "Clerk Average" FROM avgsal e1, avgsal e2, avgsal e3 WHERE e1.job = 'MANAGER' AND e2.job = 'SALESMAN‘ AND e3.job = 'CLERK'; 이종철, 탑크리에듀(www.topcredu.co.kr)
  • 9. Subquery Factoring 예문 - 5 -- WITH구문에 Inline 힌트를 사용하고 USE_NL힌트를 사용하여 WITH구 블록의 뷰를 중첩루프조 인하도록 4.9초, 중첩루프조인 한다. WITH avgsal AS (SELECT /*+ Inline */ job, avg(sal) avgsal FROM myemp1 GROUP BY job) SELECT /*+ use_nl(e2 e3) */ e1.avgsal "Manager Average", e2.avgsal "Salesman Average", e3.avgsal "Clerk Average" FROM avgsal e1, avgsal e2, avgsal e3 WHERE e1.job = 'MANAGER' AND e2.job = 'SALESMAN‘ AND e3.job = 'CLERK'; 이종철, 탑크리에듀(www.topcredu.co.kr)
  • 10. [탑크리에듀] 오라클 힌트 SQL튜닝 강좌 PL/SQL단기속성(1일완성)SQL힌트/튜닝(단기2일교육)SQL기초과정