PL / SQL DEVELOPER 실행 계획 보기
3305 단어 계획 을 집행 하 다PL/SQLDEVELOPER타산 지옥
아래 의 SELECT 문 구 를 예 로 들 면:
세 장의 표 에서 데 이 터 를 추출 하고 제 가 예전 에 생각 했 던 대로 WHERE 문구 에 세 장의 표를 연결 할 수 있 는 조건 만 있 으 면 됩 니 다.그래서 저 는 사용 만 했 습 니 다.
F5 를 누 르 면 다음 과 같은 실행 계획 을 볼 수 있 습 니 다.
씀 씀 이 974 는 사실 높 은 편 은 아니다.그러나 테스트 환경의 데이터베이스 연결 속도 가 확실히 느 려 서 데이터베이스 연결 시간 초과 알림 이 자주 나타난다.
수 정 된 SELECT 문 구 는 다음 과 같 습 니 다.
수정 은 WHERE 에 두 개의 관련 조건 을 더 한 것 으로 보인다.이 때 F5 로 계획 을 실행 합 니 다.
이때 COST 는 95 밖 에 남지 않 았 다.실제 조작 에서 도 조작 속도 의 향상 을 뚜렷하게 느 꼈 다.
실행 계획 의 집행 순 서 는 내부 에서 외부 로, 위 에서 아래로 이다.예 를 들 어 위 에서 수정 한 실행 계획 에서 데이터 베 이 스 는 먼저 ORDERHEADER 의 메 인 키 는 색인 범위 검색 을 한 다음 XXWMSDLX_SERIAL_NUMBER 의 유일한 인덱스 가 아 닌 XXWMSDLX_SERIAL_NUMBER_N4 색인 범위 검색.
수정 하기 전에 SERIALNUMBER 표 와 XXWMSDLX_SERIAL_NUMBER 표 는 순환 끼 워 넣 기 (NESTED LOOPS) 의 연결 방법 을 사용 하여 결 과 를 얻 은 후 ORDERHEADER 가 해시 연결 을 진행 합 니 다.두 표 의 데 이 터 량 이 비교적 많 기 때문에 (SERIAL NUMBER 는 테스트 환경 에서 데 이 터 량 이 1 천 4 백만 개 정도 에 달 합 니 다) 순환 포 함 된 연결 절 차 는 분명히 많은 비용 을 들 였 습 니 다.
순환 플러그 연결 중 하나 인 테이블 의 데이터 양 이 적 으 면 비용 을 많이 줄 일 수 있 을 것 으로 예상 된다.그래서 연결 조건 에 xx. client 를 하나 더 추가 합 니 다.id = oh.client_id。이렇게 해서 ORDER 을 사 용 했 습 니 다.HEADER 의 메 인 키 와 XXWMSDLX_SERIAL_NUMBER 의 N4 색인 을 연결 하여 결 과 를 얻 은 후에 SERIALNUMBER 연결.그 결과 위의 그림 에서 보 듯 이 COST 는 95 에 불과 해 집행 효율 을 크게 높 였 다.
이 경험 을 통 해 저 는 PL / SQL 의 최적화 가 상당히 신기 하고 효과 가 똑 같 지만 조건 만 추가 하면 집행 효율 을 이렇게 높 일 수 있다 고 생각 합 니 다.이 변화 로 인해 튀 어 나 온 시간 초과 알림 의 확률 이 크게 낮 아 지고 사용자 에 게 이 변 화 는 매우 중요 하 다.
다른 보기 방법:
플랜 을 먼저 만들어 야 합 니 다tablecreate table PLAN_TABLE ( statement_id varchar2(30), timestamp date, remarks varchar2(80), operation varchar2(30), options varchar2(255), object_node varchar2(128), object_owner varchar2(30), object_name varchar2(30), object_instance numeric, object_type varchar2(30), optimizer varchar2(255), search_columns number, id numeric, parent_id numeric, position numeric, cost numeric, cardinality numeric, bytes numeric, other_tag varchar2(255), partition_start varchar2(255), partition_stop varchar2(255), partition_id numeric, other long, distribution varchar2(30), cpu_cost numeric, io_cost numeric, temp_space numeric);표를 작성 한 sql 은 rdbms / admin 에 있 습 니 다. 이름 은 utlxplan. sql 입 니 다. 저 는 9i 를 사용 합 니 다. 다른 버 전의 이름 이 다 를 수 있 습 니 다. 그리고 explain plan for sql 문 구 를 실행 한 다음 에 이 sql 을 실행 할 수 있 습 니 다. 결 과 를 볼 수 있 습 니 다 SELECT LPAD (', 2 * LEVEL) | | operation || ' ' || options || ' ' || object_name query_plan FROM plan_tableCONNECT BY PRIOR id = parent_idSTART WITH id = 1ORDER BY id;
따로 떼 기:
, cost , , Description , table access
full , 。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Processing Data via PL/SQL텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.