SlideShare a Scribd company logo
오라클힌트/튜닝 #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

PPTX
(오라클SQL기초강좌)상관 서브쿼리(Correlated Sub Query)
PPTX
(쿼리 변환, Query Transformation,서브쿼리푸시,SubQuery Pushing)SQL튜닝을 위해 서브쿼리의 드라이빙을 제어...
PPTX
(오라클힌트/SQL튜닝 강좌)쿼리튜닝을 위한 오라클의 10053 이벤트
PPTX
(오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL...
PPTX
(SQL튜닝,오라클힌트강좌)구체화뷰(Materialized View)를 통한 그룹함수(SUM,MAX,MIN,AVG)의 튜닝_오라클 옵티마이...
PPTX
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
PPTX
(SQL초보자를 위한, 쿼리최적화 for SQL튜닝)SQL쿼리작성Tip,최적화팁,최적화된SQL작성방법교육
PDF
#12.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_구로IT학원, 국비지원학원,재직자/실업자교육학원,스...
(오라클SQL기초강좌)상관 서브쿼리(Correlated Sub Query)
(쿼리 변환, Query Transformation,서브쿼리푸시,SubQuery Pushing)SQL튜닝을 위해 서브쿼리의 드라이빙을 제어...
(오라클힌트/SQL튜닝 강좌)쿼리튜닝을 위한 오라클의 10053 이벤트
(오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL...
(SQL튜닝,오라클힌트강좌)구체화뷰(Materialized View)를 통한 그룹함수(SUM,MAX,MIN,AVG)의 튜닝_오라클 옵티마이...
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
(SQL초보자를 위한, 쿼리최적화 for SQL튜닝)SQL쿼리작성Tip,최적화팁,최적화된SQL작성방법교육
#12.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_구로IT학원, 국비지원학원,재직자/실업자교육학원,스...

What's hot (20)

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

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

PPTX
Db활용가이드
PDF
MySQL 5.7 NF – Optimizer Improvement
PDF
(SQL힌트튜닝,온라인화상교육#3회차,강의자료,12/22)중첩루프조인개요,USE_NL, ORDERED, USE_NL_WITH_INDEX_오...
PPTX
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
PDF
오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지
PDF
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
PPTX
MySQL과 PHP
PPTX
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
PPTX
파이썬 sqlite 이해하기
PDF
제12장 시퀀스와 인덱스
PPTX
05주차 dml- 자료 관리
PDF
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
PDF
제8장 테이블 생성 수정 제거하기
PPTX
실무로 배우는 시스템 성능 최적화 Ch6
PDF
[제3회 스포카콘] SQL 쿼리 최적화 맛보기
PDF
#25.SQL초보에서 Schema Objects까지_구로IT학원/국비지원IT학원추천/구로디지털단지IT학원/재직자환급교육추천
PDF
BlOOM FILTER의 이해와 활용방법_Wh oracle
PDF
Fundamentals of Oracle SQL
PDF
트랜잭션_인덱싱.pdf
PPT
활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기
Db활용가이드
MySQL 5.7 NF – Optimizer Improvement
(SQL힌트튜닝,온라인화상교육#3회차,강의자료,12/22)중첩루프조인개요,USE_NL, ORDERED, USE_NL_WITH_INDEX_오...
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
MySQL과 PHP
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
파이썬 sqlite 이해하기
제12장 시퀀스와 인덱스
05주차 dml- 자료 관리
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
제8장 테이블 생성 수정 제거하기
실무로 배우는 시스템 성능 최적화 Ch6
[제3회 스포카콘] SQL 쿼리 최적화 맛보기
#25.SQL초보에서 Schema Objects까지_구로IT학원/국비지원IT학원추천/구로디지털단지IT학원/재직자환급교육추천
BlOOM FILTER의 이해와 활용방법_Wh oracle
Fundamentals of Oracle SQL
트랜잭션_인덱싱.pdf
활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기
Ad

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

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

(오라클힌트,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기초과정