요즘 많은 툴에서 자동으로 싱행 계획을 보여 주지만 SQL로 직접 플랜을 확인하는 것도 의미가
있다고 생각 됩니다.
순서는 다음과 같습니다.
1. Plan_table 생성 : table을 생성하기 위한 script는 ?/rdbms/admin/utlxplan.sql 입니다.
2. Index 생성 : 수행 속도 향상과 동일한 statement_id가 생성되는 것을 방지하기 위해
index를 생성한다.
SQL> create unique index plan_index on plan_table(statement_id,id);
3. SQL 문 사용으로 실핸계획 생성 : STATEMENT_ID 지정
EXPLAIN PLAN SET STATEMENT_ID='a1' FOR
SELECT /*+ index(free_idx free) */ * from free;
4. 앞에서 지정된 STATEMENT_ID를 이용하여 Plan_table 을 select
Select
lpad(operation,length(operation)+ 2*(level-1)) ||decode(id,0,'cost estimate:' ||
decode(position,'0','N/A',position),null) || ' ' ||options || decode
(object_name,null,null,':') ||
rpad(object_owner, length(object_name)+1,',') || object_name ||
decode (object_type,'UNIQUE' ,'(U) ','NON_UNIQUE','(NU)',null) ||
decode(object_instance,null,null,'('||object_instance||')')
FROM PLAN_TABLE
START WITH ID= 0 and STATEMENT_ID = 'a1'
CONNECT by prior ID=PARENT_ID and STATEMENT_ID='a1'
추가로 SQL*Plus에서 자동으로 플랜을 보여 줄수 도 있습니다.
또한 위에서 제시한 SQL외에도 다양한 SQL이 존재 합니다.
오라클 버전에 따라서는 Plan Table에 유용한 정보가 추가 되기도 합니다.
좀더 자세한 정보는 오라클 8i Designing and Tuning for Performance 메뉴얼 5장을 참고 하시
기 바랍니다.
있다고 생각 됩니다.
순서는 다음과 같습니다.
1. Plan_table 생성 : table을 생성하기 위한 script는 ?/rdbms/admin/utlxplan.sql 입니다.
2. Index 생성 : 수행 속도 향상과 동일한 statement_id가 생성되는 것을 방지하기 위해
index를 생성한다.
SQL> create unique index plan_index on plan_table(statement_id,id);
3. SQL 문 사용으로 실핸계획 생성 : STATEMENT_ID 지정
EXPLAIN PLAN SET STATEMENT_ID='a1' FOR
SELECT /*+ index(free_idx free) */ * from free;
4. 앞에서 지정된 STATEMENT_ID를 이용하여 Plan_table 을 select
Select
lpad(operation,length(operation)+ 2*(level-1)) ||decode(id,0,'cost estimate:' ||
decode(position,'0','N/A',position),null) || ' ' ||options || decode
(object_name,null,null,':') ||
rpad(object_owner, length(object_name)+1,',') || object_name ||
decode (object_type,'UNIQUE' ,'(U) ','NON_UNIQUE','(NU)',null) ||
decode(object_instance,null,null,'('||object_instance||')')
FROM PLAN_TABLE
START WITH ID= 0 and STATEMENT_ID = 'a1'
CONNECT by prior ID=PARENT_ID and STATEMENT_ID='a1'
추가로 SQL*Plus에서 자동으로 플랜을 보여 줄수 도 있습니다.
또한 위에서 제시한 SQL외에도 다양한 SQL이 존재 합니다.
오라클 버전에 따라서는 Plan Table에 유용한 정보가 추가 되기도 합니다.
좀더 자세한 정보는 오라클 8i Designing and Tuning for Performance 메뉴얼 5장을 참고 하시
기 바랍니다.
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
86 | sql 문 실행명령 | 원우석 | 2004.07.31 | 3500 |
85 | DB2 종료후 다시 시작 | 원우석 | 2004.07.31 | 2660 |
84 | lock 상태 확인 | 원우석 | 2004.07.31 | 4803 |
83 | sybase DB에서 파일로 백업을 받구 그파일을 다시 DB2로 임포트하는방법 | 원우석 | 2004.07.31 | 3748 |
82 | 임포트시 테이블에 데이터를 모두 클리어 할때 | 원우석 | 2004.07.31 | 2793 |
81 | 특정테이블을 백업받을때 | 원우석 | 2004.07.31 | 3093 |
80 | DB를 백업받을때 | 원우석 | 2004.07.31 | 2811 |
79 | 카탈로그 파일 내용보기 | 원우석 | 2004.07.31 | 2988 |
78 | 데이타 모델링(이화식 강의) 부분 목차정리. | 박상현 | 2004.06.22 | 3124 |
77 | oracle 8i제공 explan table 생성 script | 박상현 | 2004.05.08 | 2493 |
76 | toad에서 사용가능한 explan_table생성 script | 박상현 | 2004.05.08 | 6381 |
75 | 오라클 DUAL Table처럼 DB2에서 임시 테이블 사용하기 | 원우석 | 2004.01.08 | 4213 |
74 | ORACLE -> MSSQL 시 LPAD 처리 | 운영자 | 2003.10.08 | 4050 |
73 | Unix, Oracle, Pro*C작성 입찰공고 | 운영자 | 2003.06.05 | 4354 |
72 | Unix, Oracle, Pro*C작성 구인구직게시판 | 운영자 | 2003.06.05 | 4729 |
71 | Unix, Oracle, Pro*C작성 자유게시판 | 운영자 | 2003.06.05 | 4595 |
» | plan table(sql실행계획) 보는 select문 | 운영자 | 2003.01.28 | 3831 |
69 | java에서 array처리 방법 | 운영자 | 2003.01.27 | 6033 |
68 | 효율적인 25가지 SQL작성법 | 운영자 | 2003.01.04 | 2911 |
67 | 중복 data는 처음에만 display 하게 하는 방법 | 운영자 | 2002.11.23 | 2852 |