SlideShare a Scribd company logo
1 of 16
SQL기초강좌
SET AUTOTRACE
[참고]SET AUTOTRACE
SQL*Plus에서 사용자는 자동으로 Optimizer에서 실행계획과 통계정보
를 얻을 수 있다. AUTOTRACE를 사용하며 DML문을 성공적으로 수행
시 만들어지며 DML문의 성능 튜닝을 위한 방법으로 자주 이용 된다.
SET AUTOTRACE를 사용하기 위해선 실행 계획용 테이블(PLAN_TABLE)
이 존재해야 하며 구문을 활성화 하기 위해 SET AUTOTRACE ON, 비
활성화 하기위해 SET AUTOTRACE OFF하고 하면 됩니다. 참고로 SET
AUTOTRACE에서 사용 할 수 있는 옵션은 다음과 같다.
SQL기초강좌_기본쿼리(SELECT)
[참고]SET AUTOTRACE
SET AUTOTRACE OFF : 기본값으로 AUTOTRACE를 수행하지 않는다.
SET AUTOTRACE ON EXPLAIN : 실행계획만을 출력
SET AUTOTRACE ON STATISTICS : 통계정보만을 출력
SET AUTOTRACE ON : 옵티마이저의 실행계획과 통계정보,
질의의 실행 결과를 함께 출력
SET AUTOTRACE TRACEONLY [EXPLAIN]
: SET AUTOTRACE ON과 유사하지만 옵티마이저의 실행계획과 통계정보를
출력, 만약 EXPAIN이라고 하면 실행계획만 출력 한다.
SQL기초강좌_기본쿼리(SELECT)
SQL예시
SQL> conn / as sysdba
연결되었습니다.
-- 본인의 오라클설치 경로에 맞추도록 하세요.
SQL> @d:appAproduct11.2.0dbhome_1sqlplusadminplustrce.sql
SQL>
SQL> drop role plustrace;
drop role plustrace
*
1행에 오류:
ORA-01919: 롤 'PLUSTRACE'(이)가 존재하지 않습니다
SQL> create role plustrace;
롤이 생성되었습니다.
SQL기초강좌_기본쿼리(SELECT)
SQL예시
SQL>
SQL> grant select on v_$sesstat to plustrace;
권한이 부여되었습니다.
SQL> grant select on v_$statname to plustrace;
권한이 부여되었습니다.
SQL> grant select on v_$session to plustrace;
권한이 부여되었습니다.
SQL> grant plustrace to dba with admin option;
권한이 부여되었습니다.
SQL> set echo off
SQL기초강좌_기본쿼리(SELECT)
SQL예시
SQL> grant plustrace to scott;
권한이 부여되었습니다.
SQL> conn scott/tiger
연결되었습니다.
-- 본인의 오라클설치 경로에 맞게 고치세요.
SQL> @d:appAproduct11.2.0dbhome_1RDBMSADMINutlxplan.sql
테이블이 생성되었습니다.
SQL기초강좌_기본쿼리(SELECT)
SQL예시
여기 까지 하면 SQL*Plus에서 TRACE 하기위한 plustrace 롤을 SCOTT이 부
여 받았고, 실행계획을 저장 할 테이블인 PLAN_TABLE도 생성된다.
--쿼리 실행 결과는 안 나온다. SET AUTOTRACE TRACEONLY라고 해도 된다.
SQL> SET AUTOTRACE TRACEONLY
SQL> SET AUTOTRACE TRACE
SQL> SELECT * FROM MYEMP1;
10000002 개의 행이 선택되었습니다.
경 과: 00:02:12.39
SQL기초강좌_기본쿼리(SELECT)
SQL예시
Execution Plan
-------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 10M| 629M| 25300 (2)| 00:05:04 |
| 1 | TABLE ACCESS FULL | MYEMP1| 10M| 629M| 25300 (2)| 00:05:04 |
-------------------------------------------------------------------------------------
SQL기초강좌_기본쿼리(SELECT)
SQL예시
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
749456 consistent gets
91820 physical reads
0 redo size
815171348 bytes sent via SQL*Net to client
7333846 bytes received via SQL*Net from client
666668 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
10000002 rows processed
SQL> set autotrace off --trace 기능 해제
SQL> SELECT count(*) FROM myemp1;
COUNT(*)
----------
10000002
SQL> set autotrace on;
SQL기초강좌_기본쿼리(SELECT)
SQL예시
SQL> SELECT DEPTNO, MIN(SAL)
FROM MYEMP1
GROUP BY DEPTNO
HAVING MIN(SAL) > (SELECT MIN(SAL) FROM MYEMP1
WHERE DEPTNO = '1');
D MIN(SAL)
--- -----------
3 3
2 2
SQL기초강좌_기본쿼리(SELECT)
-- 부서별 급여의 최소값을 구하는데 그 최소값이 ‘1’번 부서의
급여최소값 보다 큰 부서 출력
SQL예시
Execution Plan
---------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 8 | 25954 (4)| 00:05:12 |
|* 1 | FILTER | | | | | |
| 2 | HASH GROUP BY | | 1 | 8 | 25954 (4)| 00:05:12 |
| 3 | TABLE ACCESS FULL | MYEMP1 | 10M| 76M| 25215 (1)| 00:05:03 |
| 4 | SORT AGGREGATE | | 1 | 8 | | |
|* 5 | TABLE ACCESS FULL | MYEMP1 | 2510K| 19M| 25229 (1)| 00:05:03 |
---------------------------------------------------------------------------------------------
SQL기초강좌_기본쿼리(SELECT)
-- 부서별 급여의 최소값을 구하는데 그 최소값이 ‘1’번 부서의
급여최소값 보다 큰 부서 출력
SQL예시
Statistics
----------------------------------------------------------
594 recursive calls
0 db block gets
183794 consistent gets
183640 physical reads
0 redo size
665 bytes sent via SQL*Net to client
520 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
11 sorts (memory)
0 sorts (disk)
2 rows processed
SQL기초강좌_기본쿼리(SELECT)
-- 부서별 급여의 최소값을 구하는데 그 최소값이 ‘1’번 부서의
급여최소값 보다 큰 부서 출력
SQL예시
Statistics
----------------------------------------------------------
594 recursive calls //재귀호출의 횟수
0 db block gets //현재의 블록이 요구된 횟수
(DML or SELECT FOR UPDATE등에 의한 current mode로 읽힌 블록 수)
183794 consistent gets //한 블록에 대해 요구된 consistent read 횟수
(SELECT했을 때 읽기 일관성 모드로 읽힌 블록 수)
183640 physical reads //디스크로부터 읽어들인 데이터 블록의 총 개수
0 redo size 리두로그가 만들어진 크기(SIZE)
665 bytes sent via SQL*Net to client //Client에 보내진 바이트수
520 bytes received via SQL*Net from client //client로부터 받은 바이트 수
2 SQL*Net roundtrips to/from client
//클라이언트에 송/수신된 Net메시지 합계
SQL기초강좌_기본쿼리(SELECT)
-- 부서별 급여의 최소값을 구하는데 그 최소값이 ‘1’번 부서의
급여최소값 보다 큰 부서 출력
SQL예시
Statistics
----------------------------------------------------------
11 sorts (memory) //메모리에서 일어난 소트의 수
0 sorts (disk) //디스트에서 일어나 소트의 수
2 rows processed //연산을 하는 동안 처리한 ROW의 수
재귀적 호출이란, 오라클은 내부 처리를 위한 테이블을 관리 하며 이 테이블
을 변화 시킬 때 내부적인 SQL문장을 생성하는데 이를 재귀적인 호출이라고
한다. 예를 들면 테이블의 존재나 권한의 체크 등을 위한 SQL등
SQL기초강좌_기본쿼리(SELECT)
-- 부서별 급여의 최소값을 구하는데 그 최소값이 ‘1’번 부서의
급여최소값 보다 큰 부서 출력
대용량 테이블에서의 ORDER BY
-- myemp1 테이블은 1000만건 정도 데이터가 있다.
-- 아래 쿼리를 실행하고 결과를 확인하려면 십여초 있어야 한다.
SQL> select empno, ename, sal from myemp1
order by ename;
SQL기초강좌_기본쿼리(SELECT)
-- ORDER BY는 데이터를 메모리에 올려놓고 소트를 진행하고 메모리 공간이
부족하면 디스크(임시 테이블스페이스)에 놓고 정렬을 수행하므로, 대용량의
테이블에서는 사용을 자제해야 한다. 인덱스를 적절히 이용하고 오라클 힌트
등을 사용한다면 많은 성능상 이점이 있다.
대용량 테이블에서의 ORDER BY
-- 이번에는 적절한 인덱스를 만들고 인덱스 영역에서 데이터를 가지고 올 수
있도록 간단한 오라클 힌트를 사용해 보자. Index 힌트는 인자로 주어진 인덱
스 영역에서 데이터를 순방향(ASCENDING)으로 스캔하라는 힌트이다. 실행
하면 데이터가 바로 나온다. WHERE절에 ename 컬럼을 출현시키지 않으면
힌트에서 기술한대로 인덱스를 이용하지 못하니 확인해 보라.
SQL>CREATE INDEX IDX_MYEMP1_ENAME ON MYEMP1(ENAME DESC);
SQL> select /*+ index(myemp1 idx_myemp1_ename) */
2 empno, ename, sal
3 from myemp1
4 where ename >= ‘ㄱ’;
SQL기초강좌_기본쿼리(SELECT)

More Related Content

What's hot

#12.SQL초보에서 schema Objects까지(구로IT학원/IT실무교육학원/국비지원IT교육학원/오라클교육/자바교육/닷넷교육학원추천)
#12.SQL초보에서 schema Objects까지(구로IT학원/IT실무교육학원/국비지원IT교육학원/오라클교육/자바교육/닷넷교육학원추천)#12.SQL초보에서 schema Objects까지(구로IT학원/IT실무교육학원/국비지원IT교육학원/오라클교육/자바교육/닷넷교육학원추천)
#12.SQL초보에서 schema Objects까지(구로IT학원/IT실무교육학원/국비지원IT교육학원/오라클교육/자바교육/닷넷교육학원추천)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지
오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지
오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[구로IT학원추천/구로디지털단지IT학원/국비지원IT학원/재직자/구직자환급교육]#9.SQL초보에서 Schema Objects까지
[구로IT학원추천/구로디지털단지IT학원/국비지원IT학원/재직자/구직자환급교육]#9.SQL초보에서 Schema Objects까지[구로IT학원추천/구로디지털단지IT학원/국비지원IT학원/재직자/구직자환급교육]#9.SQL초보에서 Schema Objects까지
[구로IT학원추천/구로디지털단지IT학원/국비지원IT학원/재직자/구직자환급교육]#9.SQL초보에서 Schema Objects까지탑크리에듀(구로디지털단지역3번출구 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실무교육학원/재직자/실업자교육학원추천)탑크리에듀(구로디지털단지역3번출구 2분거리)
 

What's hot (20)

Rownum
RownumRownum
Rownum
 
단일행 서브쿼리
단일행 서브쿼리단일행 서브쿼리
단일행 서브쿼리
 
Sql 합성연산자
Sql 합성연산자Sql 합성연산자
Sql 합성연산자
 
복수행 서브쿼리
복수행 서브쿼리복수행 서브쿼리
복수행 서브쿼리
 
Sql 조건연산자를 이용한 조건검색(2)
Sql 조건연산자를 이용한 조건검색(2)Sql 조건연산자를 이용한 조건검색(2)
Sql 조건연산자를 이용한 조건검색(2)
 
1.8 튜닝의도구 dbms xplan
1.8 튜닝의도구 dbms xplan1.8 튜닝의도구 dbms xplan
1.8 튜닝의도구 dbms xplan
 
#12.SQL초보에서 schema Objects까지(구로IT학원/IT실무교육학원/국비지원IT교육학원/오라클교육/자바교육/닷넷교육학원추천)
#12.SQL초보에서 schema Objects까지(구로IT학원/IT실무교육학원/국비지원IT교육학원/오라클교육/자바교육/닷넷교육학원추천)#12.SQL초보에서 schema Objects까지(구로IT학원/IT실무교육학원/국비지원IT교육학원/오라클교육/자바교육/닷넷교육학원추천)
#12.SQL초보에서 schema Objects까지(구로IT학원/IT실무교육학원/국비지원IT교육학원/오라클교육/자바교육/닷넷교육학원추천)
 
(오라클SQL기초강좌)상관 서브쿼리(Correlated Sub Query)
(오라클SQL기초강좌)상관 서브쿼리(Correlated Sub Query)(오라클SQL기초강좌)상관 서브쿼리(Correlated Sub Query)
(오라클SQL기초강좌)상관 서브쿼리(Correlated Sub Query)
 
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)
 
3.6 실행계획 SQL 연산 (NESTED LOOP SEMI-JOIN)
3.6 실행계획 SQL 연산 (NESTED LOOP SEMI-JOIN)3.6 실행계획 SQL 연산 (NESTED LOOP SEMI-JOIN)
3.6 실행계획 SQL 연산 (NESTED LOOP SEMI-JOIN)
 
오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지
오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지
오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지
 
[구로IT학원추천/구로디지털단지IT학원/국비지원IT학원/재직자/구직자환급교육]#9.SQL초보에서 Schema Objects까지
[구로IT학원추천/구로디지털단지IT학원/국비지원IT학원/재직자/구직자환급교육]#9.SQL초보에서 Schema Objects까지[구로IT학원추천/구로디지털단지IT학원/국비지원IT학원/재직자/구직자환급교육]#9.SQL초보에서 Schema Objects까지
[구로IT학원추천/구로디지털단지IT학원/국비지원IT학원/재직자/구직자환급교육]#9.SQL초보에서 Schema Objects까지
 
#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튜닝 강좌)쿼리튜닝을 위한 오라클의 10053 이벤트
(오라클힌트/SQL튜닝 강좌)쿼리튜닝을 위한 오라클의 10053 이벤트(오라클힌트/SQL튜닝 강좌)쿼리튜닝을 위한 오라클의 10053 이벤트
(오라클힌트/SQL튜닝 강좌)쿼리튜닝을 위한 오라클의 10053 이벤트
 
3.1 실행계획 sql 연산 (and equal)
3.1 실행계획 sql 연산 (and equal)3.1 실행계획 sql 연산 (and equal)
3.1 실행계획 sql 연산 (and equal)
 
(오라클힌트,SQL튜닝강좌#25)오라클WITH구문,서브쿼리 팩토링
(오라클힌트,SQL튜닝강좌#25)오라클WITH구문,서브쿼리 팩토링(오라클힌트,SQL튜닝강좌#25)오라클WITH구문,서브쿼리 팩토링
(오라클힌트,SQL튜닝강좌#25)오라클WITH구문,서브쿼리 팩토링
 
3.5 실행계획 SQL 연산 (HASH SEMI-JOIN)
3.5 실행계획 SQL 연산 (HASH SEMI-JOIN)3.5 실행계획 SQL 연산 (HASH SEMI-JOIN)
3.5 실행계획 SQL 연산 (HASH SEMI-JOIN)
 
IT실무교육학원/자바학원/오라클학원/SQL기초학원추천_#11.SQL초보에서 Schema Objects까지
IT실무교육학원/자바학원/오라클학원/SQL기초학원추천_#11.SQL초보에서 Schema Objects까지IT실무교육학원/자바학원/오라클학원/SQL기초학원추천_#11.SQL초보에서 Schema Objects까지
IT실무교육학원/자바학원/오라클학원/SQL기초학원추천_#11.SQL초보에서 Schema Objects까지
 
(오라클SQL강좌)오라클 NLS 파라미터_NLS_DATE_FORMAT, NLS_LANG, NLS_LANGUAGE, NLS_TERRITORY...
(오라클SQL강좌)오라클 NLS 파라미터_NLS_DATE_FORMAT, NLS_LANG, NLS_LANGUAGE, NLS_TERRITORY...(오라클SQL강좌)오라클 NLS 파라미터_NLS_DATE_FORMAT, NLS_LANG, NLS_LANGUAGE, NLS_TERRITORY...
(오라클SQL강좌)오라클 NLS 파라미터_NLS_DATE_FORMAT, NLS_LANG, NLS_LANGUAGE, NLS_TERRITORY...
 
3.7 실행계획 SQL 연산 (INDEX RANGE SCAN DESCENDING, INLIST ITERATIOR)
3.7 실행계획 SQL 연산 (INDEX RANGE SCAN DESCENDING, INLIST ITERATIOR)3.7 실행계획 SQL 연산 (INDEX RANGE SCAN DESCENDING, INLIST ITERATIOR)
3.7 실행계획 SQL 연산 (INDEX RANGE SCAN DESCENDING, INLIST ITERATIOR)
 

Similar to Sql기초강좌2_SET AUTOTRACE_SQL교육

배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle엑셈
 
Result Cache 동작원리 및 활용방안_Wh oracle
Result Cache 동작원리 및 활용방안_Wh oracleResult Cache 동작원리 및 활용방안_Wh oracle
Result Cache 동작원리 및 활용방안_Wh oracle엑셈
 
데이타베이스 기본튜닝
데이타베이스 기본튜닝 데이타베이스 기본튜닝
데이타베이스 기본튜닝 Jinuk Bhak
 
MySQL_MariaDB로의_전환_기술요소-202212.pptx
MySQL_MariaDB로의_전환_기술요소-202212.pptxMySQL_MariaDB로의_전환_기술요소-202212.pptx
MySQL_MariaDB로의_전환_기술요소-202212.pptxNeoClova
 
SQL Profile을 이용한 SQL Plan 변경_Wh oracle
SQL Profile을 이용한 SQL Plan 변경_Wh oracleSQL Profile을 이용한 SQL Plan 변경_Wh oracle
SQL Profile을 이용한 SQL Plan 변경_Wh oracle엑셈
 
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstatSeok-joon Yun
 
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3Seok-joon Yun
 
SQL PlAN MANAGEMENT 활용_Wh oracle
SQL PlAN MANAGEMENT 활용_Wh oracleSQL PlAN MANAGEMENT 활용_Wh oracle
SQL PlAN MANAGEMENT 활용_Wh oracle엑셈
 
Database 튜닝 교육 110124
Database 튜닝 교육 110124Database 튜닝 교육 110124
Database 튜닝 교육 110124한 경만
 
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기Kenu, GwangNam Heo
 
Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석Sung wook Kang
 
(재직자환급교육/사업주위탁/IT실무교육/구로IT학원/오라클교육/SQL기초강좌/IT강좌)#10.SQL초보에서 Schema Objects까지
(재직자환급교육/사업주위탁/IT실무교육/구로IT학원/오라클교육/SQL기초강좌/IT강좌)#10.SQL초보에서 Schema Objects까지(재직자환급교육/사업주위탁/IT실무교육/구로IT학원/오라클교육/SQL기초강좌/IT강좌)#10.SQL초보에서 Schema Objects까지
(재직자환급교육/사업주위탁/IT실무교육/구로IT학원/오라클교육/SQL기초강좌/IT강좌)#10.SQL초보에서 Schema Objects까지탑크리에듀(구로디지털단지역3번출구 2분거리)
 
효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차희동 강
 

Similar to Sql기초강좌2_SET AUTOTRACE_SQL교육 (20)

배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
 
Result Cache 동작원리 및 활용방안_Wh oracle
Result Cache 동작원리 및 활용방안_Wh oracleResult Cache 동작원리 및 활용방안_Wh oracle
Result Cache 동작원리 및 활용방안_Wh oracle
 
데이타베이스 기본튜닝
데이타베이스 기본튜닝 데이타베이스 기본튜닝
데이타베이스 기본튜닝
 
MySQL_MariaDB로의_전환_기술요소-202212.pptx
MySQL_MariaDB로의_전환_기술요소-202212.pptxMySQL_MariaDB로의_전환_기술요소-202212.pptx
MySQL_MariaDB로의_전환_기술요소-202212.pptx
 
SQL Profile을 이용한 SQL Plan 변경_Wh oracle
SQL Profile을 이용한 SQL Plan 변경_Wh oracleSQL Profile을 이용한 SQL Plan 변경_Wh oracle
SQL Profile을 이용한 SQL Plan 변경_Wh oracle
 
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
 
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
 
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
 
SQL PlAN MANAGEMENT 활용_Wh oracle
SQL PlAN MANAGEMENT 활용_Wh oracleSQL PlAN MANAGEMENT 활용_Wh oracle
SQL PlAN MANAGEMENT 활용_Wh oracle
 
Database 튜닝 교육 110124
Database 튜닝 교육 110124Database 튜닝 교육 110124
Database 튜닝 교육 110124
 
5.2 비트맵 인덱스
5.2 비트맵 인덱스5.2 비트맵 인덱스
5.2 비트맵 인덱스
 
집합함수(2)
집합함수(2)집합함수(2)
집합함수(2)
 
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
 
3.4 실행계획 SQL 연산 (Hash Anti-Join)
3.4 실행계획 SQL 연산 (Hash Anti-Join)3.4 실행계획 SQL 연산 (Hash Anti-Join)
3.4 실행계획 SQL 연산 (Hash Anti-Join)
 
Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석
 
(재직자환급교육/사업주위탁/IT실무교육/구로IT학원/오라클교육/SQL기초강좌/IT강좌)#10.SQL초보에서 Schema Objects까지
(재직자환급교육/사업주위탁/IT실무교육/구로IT학원/오라클교육/SQL기초강좌/IT강좌)#10.SQL초보에서 Schema Objects까지(재직자환급교육/사업주위탁/IT실무교육/구로IT학원/오라클교육/SQL기초강좌/IT강좌)#10.SQL초보에서 Schema Objects까지
(재직자환급교육/사업주위탁/IT실무교육/구로IT학원/오라클교육/SQL기초강좌/IT강좌)#10.SQL초보에서 Schema Objects까지
 
효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차
 
1.11 실행계획 해석 predicate
1.11 실행계획 해석 predicate1.11 실행계획 해석 predicate
1.11 실행계획 해석 predicate
 
6.4 hints for access paths(index)
6.4 hints for access paths(index)6.4 hints for access paths(index)
6.4 hints for access paths(index)
 
3.8 실행계획 SQL 연산 (MERGE JOIN, MERGE SEMI JOIN)
3.8 실행계획 SQL 연산 (MERGE JOIN, MERGE SEMI JOIN)3.8 실행계획 SQL 연산 (MERGE JOIN, MERGE SEMI JOIN)
3.8 실행계획 SQL 연산 (MERGE JOIN, MERGE SEMI JOIN)
 

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...
 
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
 
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(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
 

Sql기초강좌2_SET AUTOTRACE_SQL교육

  • 2. [참고]SET AUTOTRACE SQL*Plus에서 사용자는 자동으로 Optimizer에서 실행계획과 통계정보 를 얻을 수 있다. AUTOTRACE를 사용하며 DML문을 성공적으로 수행 시 만들어지며 DML문의 성능 튜닝을 위한 방법으로 자주 이용 된다. SET AUTOTRACE를 사용하기 위해선 실행 계획용 테이블(PLAN_TABLE) 이 존재해야 하며 구문을 활성화 하기 위해 SET AUTOTRACE ON, 비 활성화 하기위해 SET AUTOTRACE OFF하고 하면 됩니다. 참고로 SET AUTOTRACE에서 사용 할 수 있는 옵션은 다음과 같다. SQL기초강좌_기본쿼리(SELECT)
  • 3. [참고]SET AUTOTRACE SET AUTOTRACE OFF : 기본값으로 AUTOTRACE를 수행하지 않는다. SET AUTOTRACE ON EXPLAIN : 실행계획만을 출력 SET AUTOTRACE ON STATISTICS : 통계정보만을 출력 SET AUTOTRACE ON : 옵티마이저의 실행계획과 통계정보, 질의의 실행 결과를 함께 출력 SET AUTOTRACE TRACEONLY [EXPLAIN] : SET AUTOTRACE ON과 유사하지만 옵티마이저의 실행계획과 통계정보를 출력, 만약 EXPAIN이라고 하면 실행계획만 출력 한다. SQL기초강좌_기본쿼리(SELECT)
  • 4. SQL예시 SQL> conn / as sysdba 연결되었습니다. -- 본인의 오라클설치 경로에 맞추도록 하세요. SQL> @d:appAproduct11.2.0dbhome_1sqlplusadminplustrce.sql SQL> SQL> drop role plustrace; drop role plustrace * 1행에 오류: ORA-01919: 롤 'PLUSTRACE'(이)가 존재하지 않습니다 SQL> create role plustrace; 롤이 생성되었습니다. SQL기초강좌_기본쿼리(SELECT)
  • 5. SQL예시 SQL> SQL> grant select on v_$sesstat to plustrace; 권한이 부여되었습니다. SQL> grant select on v_$statname to plustrace; 권한이 부여되었습니다. SQL> grant select on v_$session to plustrace; 권한이 부여되었습니다. SQL> grant plustrace to dba with admin option; 권한이 부여되었습니다. SQL> set echo off SQL기초강좌_기본쿼리(SELECT)
  • 6. SQL예시 SQL> grant plustrace to scott; 권한이 부여되었습니다. SQL> conn scott/tiger 연결되었습니다. -- 본인의 오라클설치 경로에 맞게 고치세요. SQL> @d:appAproduct11.2.0dbhome_1RDBMSADMINutlxplan.sql 테이블이 생성되었습니다. SQL기초강좌_기본쿼리(SELECT)
  • 7. SQL예시 여기 까지 하면 SQL*Plus에서 TRACE 하기위한 plustrace 롤을 SCOTT이 부 여 받았고, 실행계획을 저장 할 테이블인 PLAN_TABLE도 생성된다. --쿼리 실행 결과는 안 나온다. SET AUTOTRACE TRACEONLY라고 해도 된다. SQL> SET AUTOTRACE TRACEONLY SQL> SET AUTOTRACE TRACE SQL> SELECT * FROM MYEMP1; 10000002 개의 행이 선택되었습니다. 경 과: 00:02:12.39 SQL기초강좌_기본쿼리(SELECT)
  • 8. SQL예시 Execution Plan ------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 10M| 629M| 25300 (2)| 00:05:04 | | 1 | TABLE ACCESS FULL | MYEMP1| 10M| 629M| 25300 (2)| 00:05:04 | ------------------------------------------------------------------------------------- SQL기초강좌_기본쿼리(SELECT)
  • 9. SQL예시 Statistics ---------------------------------------------------------- 0 recursive calls 0 db block gets 749456 consistent gets 91820 physical reads 0 redo size 815171348 bytes sent via SQL*Net to client 7333846 bytes received via SQL*Net from client 666668 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 10000002 rows processed SQL> set autotrace off --trace 기능 해제 SQL> SELECT count(*) FROM myemp1; COUNT(*) ---------- 10000002 SQL> set autotrace on; SQL기초강좌_기본쿼리(SELECT)
  • 10. SQL예시 SQL> SELECT DEPTNO, MIN(SAL) FROM MYEMP1 GROUP BY DEPTNO HAVING MIN(SAL) > (SELECT MIN(SAL) FROM MYEMP1 WHERE DEPTNO = '1'); D MIN(SAL) --- ----------- 3 3 2 2 SQL기초강좌_기본쿼리(SELECT) -- 부서별 급여의 최소값을 구하는데 그 최소값이 ‘1’번 부서의 급여최소값 보다 큰 부서 출력
  • 11. SQL예시 Execution Plan --------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | --------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 8 | 25954 (4)| 00:05:12 | |* 1 | FILTER | | | | | | | 2 | HASH GROUP BY | | 1 | 8 | 25954 (4)| 00:05:12 | | 3 | TABLE ACCESS FULL | MYEMP1 | 10M| 76M| 25215 (1)| 00:05:03 | | 4 | SORT AGGREGATE | | 1 | 8 | | | |* 5 | TABLE ACCESS FULL | MYEMP1 | 2510K| 19M| 25229 (1)| 00:05:03 | --------------------------------------------------------------------------------------------- SQL기초강좌_기본쿼리(SELECT) -- 부서별 급여의 최소값을 구하는데 그 최소값이 ‘1’번 부서의 급여최소값 보다 큰 부서 출력
  • 12. SQL예시 Statistics ---------------------------------------------------------- 594 recursive calls 0 db block gets 183794 consistent gets 183640 physical reads 0 redo size 665 bytes sent via SQL*Net to client 520 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 11 sorts (memory) 0 sorts (disk) 2 rows processed SQL기초강좌_기본쿼리(SELECT) -- 부서별 급여의 최소값을 구하는데 그 최소값이 ‘1’번 부서의 급여최소값 보다 큰 부서 출력
  • 13. SQL예시 Statistics ---------------------------------------------------------- 594 recursive calls //재귀호출의 횟수 0 db block gets //현재의 블록이 요구된 횟수 (DML or SELECT FOR UPDATE등에 의한 current mode로 읽힌 블록 수) 183794 consistent gets //한 블록에 대해 요구된 consistent read 횟수 (SELECT했을 때 읽기 일관성 모드로 읽힌 블록 수) 183640 physical reads //디스크로부터 읽어들인 데이터 블록의 총 개수 0 redo size 리두로그가 만들어진 크기(SIZE) 665 bytes sent via SQL*Net to client //Client에 보내진 바이트수 520 bytes received via SQL*Net from client //client로부터 받은 바이트 수 2 SQL*Net roundtrips to/from client //클라이언트에 송/수신된 Net메시지 합계 SQL기초강좌_기본쿼리(SELECT) -- 부서별 급여의 최소값을 구하는데 그 최소값이 ‘1’번 부서의 급여최소값 보다 큰 부서 출력
  • 14. SQL예시 Statistics ---------------------------------------------------------- 11 sorts (memory) //메모리에서 일어난 소트의 수 0 sorts (disk) //디스트에서 일어나 소트의 수 2 rows processed //연산을 하는 동안 처리한 ROW의 수 재귀적 호출이란, 오라클은 내부 처리를 위한 테이블을 관리 하며 이 테이블 을 변화 시킬 때 내부적인 SQL문장을 생성하는데 이를 재귀적인 호출이라고 한다. 예를 들면 테이블의 존재나 권한의 체크 등을 위한 SQL등 SQL기초강좌_기본쿼리(SELECT) -- 부서별 급여의 최소값을 구하는데 그 최소값이 ‘1’번 부서의 급여최소값 보다 큰 부서 출력
  • 15. 대용량 테이블에서의 ORDER BY -- myemp1 테이블은 1000만건 정도 데이터가 있다. -- 아래 쿼리를 실행하고 결과를 확인하려면 십여초 있어야 한다. SQL> select empno, ename, sal from myemp1 order by ename; SQL기초강좌_기본쿼리(SELECT) -- ORDER BY는 데이터를 메모리에 올려놓고 소트를 진행하고 메모리 공간이 부족하면 디스크(임시 테이블스페이스)에 놓고 정렬을 수행하므로, 대용량의 테이블에서는 사용을 자제해야 한다. 인덱스를 적절히 이용하고 오라클 힌트 등을 사용한다면 많은 성능상 이점이 있다.
  • 16. 대용량 테이블에서의 ORDER BY -- 이번에는 적절한 인덱스를 만들고 인덱스 영역에서 데이터를 가지고 올 수 있도록 간단한 오라클 힌트를 사용해 보자. Index 힌트는 인자로 주어진 인덱 스 영역에서 데이터를 순방향(ASCENDING)으로 스캔하라는 힌트이다. 실행 하면 데이터가 바로 나온다. WHERE절에 ename 컬럼을 출현시키지 않으면 힌트에서 기술한대로 인덱스를 이용하지 못하니 확인해 보라. SQL>CREATE INDEX IDX_MYEMP1_ENAME ON MYEMP1(ENAME DESC); SQL> select /*+ index(myemp1 idx_myemp1_ename) */ 2 empno, ename, sal 3 from myemp1 4 where ename >= ‘ㄱ’; SQL기초강좌_기본쿼리(SELECT)