Oracle SQL 성능 최적화 시리즈 학습 2

3336 단어 OrraacclleeS
보고 있 는 ORACLE 튜 토리 얼 은 Oracle SQL 성능 최적화 시리즈 학습 2 입 니 다.  4. 가장 효율 적 인 표 이름 순 서 를 선택 하 십시오(규칙 에 기반 한 최적화 기 에서 만 유효 합 니 다)  ORACLE 의 해석 기 는 FROM 자구 의 표 명 을 오른쪽 에서 왼쪽으로 순서대로 처리 하기 때문에 FROM 자구 에 마지막 표(기초 표)를 쓴다. driving table)가장 먼저 처 리 됩 니 다. FROM 자구 에 여러 개의 시 계 를 포함 하 는 경우,기록 항목 수가 가장 적은 시 계 를 기본 표 로 선택해 야 합 니 다.ORACLE 가 여러 개의 시 계 를 처리 할 때, 정렬 및 병합 방식 으로 연결 합 니 다.우선 첫 번 째 표(FROM 자구 의 마지막 표)를 스 캔 하고 기록 을 파 순 한 다음 두 번 째 표(FROM 자구 의 마지막 두 번 째 표)를 스 캔 한 다음 두 번 째 표 에서 검색 한 모든 기록 을 첫 번 째 표 에서 적당 한 기록 과 합 칩 니 다.  예 를 들 면:  시계. TAB1 16,384 조목 기록  시계. TAB2 1 조목 기록  TAB 2 를 기본 표 로 선택 (가장 좋 은 방법  select count(*) from tab1,tab2 실행 시간 0.96 초   TAB 2 를 기본 표 로 선택 (안 좋 은 방법  select count(*) from tab2,tab1 실행 시간 26.09 초   3 개 이상 의 표 연결 조회 가 있 으 면, 교차 표(intersection)를 선택해 야 합 니 다. table)기본 표 로, 교차 표 는 다른 표 에 의 해 인 용 된 표를 가리킨다.  예 를 들 면:  EMP 표 는 LOCATION 표 와 CATEGORY 표 의 교 집합 을 묘사 했다.  SELECT *  FROM LOCATION L ,  CATEGORY C,  EMP E  WHERE E.EMP_NO BETWEEN 1000 AND 2000  AND E.CAT_NO = C.CAT_NO  AND E.LOCN = L.LOCN   다음 SQL 보다 더 효율 적 입 니 다.  SELECT *  FROM EMP E ,  LOCATION L ,  CATEGORY C  WHERE E.CAT_NO = C.CAT_NO  AND E.LOCN = L.LOCN  AND E.EMP_NO BETWEEN 1000 AND 2000     5. WHERE 자구 의 연결 순서.  ORACLE 는 아래 에서 위로 WHERE 자 구 를 해석 하 는데 이 원리 에 따라 표 간 의 연결 은 다른 WHERE 조건 전에 써 야 합 니 다. 최대 수량 기록 을 걸 러 낼 수 있 는 조건 은 WHERE 자구 의 끝 에 써 야 합 니 다.  예 를 들 면: (저 효과,실행 시간 156.3 초)  SELECT …  FROM EMP E  WHERE SAL > 50000  AND JOB = ‘MANAGER'  AND 25 < (SELECT COUNT(*) FROM EMP  WHERE MGR=E.EMPNO);   (고 효율,실행 시간 10.6 초)  SELECT …  FROM EMP E  WHERE 25 < (SELECT COUNT(*) FROM EMP  WHERE MGR=E.EMPNO)  AND SAL > 50000  AND JOB = ‘MANAGER';     6. SELECT 자구 에서 사용 하지 않 기 ‘ * ‘  SELECT 자구 에 모든 COLUMN 을 표시 하려 면 동적 SQL 열 참조 ‘*' 편리 한 방법 이다.불행 하 게 도 이것 은 매우 비효 율 적 인 방법 이다. 실제로 ORACLE 는 해석 하 는 과정 에서 '*' 순서대로 모든 열 이름 으로 변환, 이 작업 은 데이터 사전 조 회 를 통 해 이 루어 졌 습 니 다. 이것 은 더 많은 시간 을 소모 할 것 이라는 것 을 의미한다.    7. 데이터베이스 에 접근 하 는 횟수 를 줄이다  모든 SQL 문 구 를 실행 할 때, ORACLE 는 내부 에서 많은 작업 을 수행 했다. SQL 문 구 를 해석, 색인 의 이 용 률 을 추산 하 다. 바 인 딩 변수 , 데이터 블록 읽 기 등등. 이로써 알 수 있다. 데이터베이스 에 접근 하 는 횟수 를 줄이다 , 실제로 ORACLE 의 작업량 을 줄 일 수 있 습 니 다.  예컨대 다음은 세 가지 방법 으로 직원 번호 가 0342 또는 0291 인 직원 을 검색 할 수 있다.  방법 (최 저 효과  SELECT EMP_NAME , SALARY , GRADE  FROM EMP  WHERE EMP_NO = 342;  SELECT EMP_NAME , SALARY , GRADE  FROM EMP  WHERE EMP_NO = 291;   방법 (차 저 효과  DECLARE  CURSOR C1 (E_NO NUMBER) IS  SELECT EMP_NAME,SALARY,GRADE  FROM EMP  WHERE EMP_NO = E_NO;  BEGIN  OPEN C1(342);  FETCH C1 INTO …,..,.. ;  …..  OPEN C1(291);  FETCH C1 INTO …,..,.. ;  CLOSE C1;  END;   방법 (고 효율  SELECT A.EMP_NAME , A.SALARY , A.GRADE,  B.EMP_NAME , B.SALARY , B.GRADE  FROM EMP A,EMP B  WHERE A.EMP_NO = 342  AND B.EMP_NO = 291;   주[1]  [2]   다음 페이지보고 있 는 ORACLE 튜 토리 얼 은 Oracle SQL 성능 최적화 시리즈 학습 2.뜻:  SQL*Plus 에서 , SQL*Forms 와 Pro*C 에서 ARRAYSIZE 인 자 를 다시 설정 합 니 다. 데이터베이스 에 접근 할 때마다 검색 데 이 터 를 늘 릴 수 있 습 니 다. ,권장 치 는 200 이다. 
이전 페이지    [1]  [2]

좋은 웹페이지 즐겨찾기