"수확은 더 많은 SQL 최적화보다는"- 메소드 비교의 실행 계획을 얻으십시오

 

이것은 최초의 식료품 점 (450) 기사입니다

그는 계획 "비정상적인 경우 변경 계획의 구현 - 여러 가지 방법으로 소문 쿼리 실행 계획을"의 오라클 구현하는 방법에 대한 기사를 작성했다 SQL의 실행 계획을 얻기 위해 다양한 방법을 설명 리앙 선생님의 책 " 수확이 더 많은 SQL 최적화 "않고, 여러 가지 방법 등 단계, 장점과 단점, 응용 프로그램 시나리오를 획득의 측면에서 체계적인 순서를 수행하려면 학습 비교할 수 있습니다,

방법

취득 단계

이점

결점

시나리오

에 대한 계획을 설명

단계 1 : 단계 2 SQL 실행될 계획을 설명하는 표에서 *을 선택 (dbms_xplan.display ()); PS 편의 표시 형식에 대해 설정 될 수 있으며, 예를 들어 설정된 길이 10000set 페이지 크기 10000set LINESIZE 10000

실제 구현, 빠르고 편리한없이

3 테이블 방문한 횟수를 판별 할 수없는 런타임 통계 관련 출력 ;. 2 개 프로세스는 얼마나 많은 행 결정할 수 (논리 번호가 판독 얼마나 많은 재귀 호출 물리적 시간 횟수를 생성)도 없다 (1);

는 SQL 실행 시간이 결과를 추측하는 데 오랜 시간이 아닌지 경우 결과를 반환

에 설정 AUTOTRACE

1 단계 : 2 단계에서 설정 자동 추적 : 여기 당신의 SQL을 수행

1. 관련 통계 정보가 런타임에 출력을 할 수있다 (얼마나 많은 물리적 읽기의 경우 여러 번 전화를 재귀 방법을 읽을 수 많은 로직, 생산), 문들이 출력 실행 계획을 할 수 전에 완료해야 대기하는 동안 2 만 traceonly 스위치가 있습니다 화면 출력을 연주하지 않는 결과로 돌아 제어;

이 테이블에 액세스 할 때 얼마나 많은 시간을 볼 수 없습니다 1. 문이 완료 사실입니다 때까지 기다려야,이 결과 될 수있다;

나는 10046 추적 방법으로 설명이 방법을 사용하여, 약 재귀 호출 재귀 호출의 수를 알고 싶어요

STATISTICS_LEVEL = 모든

1 단계 : ALTER 세션 설정 STATISTICS_LEVEL 모든 =; 2 단계 : 여기 당신의 SQL을 실행, 3 단계 : 테이블에서 선택 * (dbms_xplan.display_cursor (NULL, NULL) 'allstats 지난');

분명히 테이블로부터 유도 될 수있다 1. 시작되면 여러 번 액세스;입니다 2 행수 명확 정확하게 오라클 평가의 정확성을 판단 할 수함으로써 예측 및 E-ROWS로부터 라인 수와 실제 A-ROWS을 할 수 있고, 수득 3 런타임 출력에 대한 명확한 통계하지만, 실행 계획 BUFFERS 있지만 논리적 읽기의 실제 값이다;

(2) 출력이 기록 화면을 명중 제어 할 수 traceonly 출력 레코드를 표시하거나하지 않도록 제어하고 자동 추적 할 수 없으며; 3. 재귀 호출의 수를 볼 수 없습니다를 참조 1. 문이 완료 사실입니다 때까지 기다릴 필요가, 결과 일 수있다 실제 판독 값 없음;

액세스 테이블의 수를 얻기 위해 단지 3 사용

dbms_xplan.display_cursor

테이블 (dbms_xplan.display_cursor ( '& SQL_ID')) *로부터 선택하고, 상기 공유 풀로부터 수득 된

1. 알고 즉시 사용 가능한 실행 계획을 SQL_ID, 같은없이 실행을위한 계획을 설명 2. 실제 실행 계획을 얻을 수 있습니다;

3 테이블 방문한 횟수를 판별 할 수없는 런타임 통계 관련 출력 ;. 2 개 프로세스는 얼마나 많은 행 결정할 수 (논리 번호가 판독 얼마나 많은 재귀 호출 물리적 시간 횟수를 생성)도 없다 (1);

스트립에게 SQL 실행 계획 케이스의 수를 관찰

이벤트 10046 추적 추적

1 단계 : ALTER 세션 설정 이벤트 '영원히 10046 추적 이름 컨텍스트, 레벨 12'(열린 트랙) 2 단계 : 단어 실행, 3 단계 : ALTER 세션 설정 이벤트 '오프 10046 추적 이름 컨텍스트'(오프 트랙); 4 단계 : 추적 후 생성 된 파일 찾는 단계 5 : TKPROF TRC 파일 목적지;

1.으로는 대기 이벤트를 해당 SQL 문을 볼 수 있으며, SQL 문이 함수 호출, SQL은 SQL을 가지고있다 2. 경우, 모두 어디 숨기려면 표시됩니다 3 쉽게 행의 수를 처리 함을 알 수있다 도 5는 전체 패키지를 추적 할 수 있으며, 물리적 논리 ;. 4 쉽게 분석 시간과 실행 시간을 알 수있다 읽기 생성;

1 단계 성가신, 너무 많은 문제 2 테이블에 액세스 할 때 얼마나 많은 시간을 확인할 수 명확하게 표시하지 않는 실행 계획의 3 술어 부분;

는 SQL 함수, 함수를 포함하고 등등 SQL,,, 다층 전화의 존재를 설정하면, 우리는 정확한 분석 만이 방법을 사용할 수 있습니다 원하는

awrsqrpt.sql

1 단계 : @ / RDBMS / 관리 / awrsqrpt.sql, 2 단계 :? A (스냅인을 시작과 끝 스냅) 중단 원하는 선택, 3 단계 : 당신의 SQL_ID를 입력;

당신은 쉽게 여러 실행 계획을 볼 수 있습니다;

너무 많은 문제를 취득하는 과정;

나는이 방법을 사용하는 여러 SQL 실행 계획의 스트립을보고 싶어

가장 정확한 가능한 실행 계획을 얻기 위해서는, 가장 중요한 점은, 해당 실행 계획은 대부분의 실제, 또는, 추정을 통해 것이다 획득의 편차가있다이 진정 만 정말 수행 SQL 실행이다 ,

, 편집 영상 포맷뿐만 아니라, 엑셀 형식을 마무리 용이하게하기 위해, 당신은 다운로드 할 수 있습니다,

1. 사진 형식

https://github.com/bisal-liu/oracle/blob/master/explain/%E6%89%A7%E8%A1%8C.png

2. 엑셀 형식

https://github.com/bisal-liu/oracle/blob/master/explain/%E6%89%A7%E8%A1%8C.xlsx

추천

출처www.cnblogs.com/yaoyangding/p/12052239.html