이 문서는 지원되지 않는 토토 꽁 머니 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.토토 : 문서 : 17 : 50.5. 플래너/최적화버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

2.5. 플래너/옵티마이저

의 임무플래너/옵티마이저이다 최적의 실행 계획을 수립합니다. 먼저 모든 것을 결합합니다. 가능한 방법스캔 중그리고가입쿼리에 나타나는 관계. 모두 생성된 경로는 동일한 결과로 이어지며 이는 각 경로를 실행하는 데 드는 비용을 추정하는 최적화 프로그램 어느 것이 가장 저렴한지 알아보세요.

2.5.1. 가능한 계획 생성

플래너/최적화 프로그램은 어떤 계획을 세워야 할지 결정합니다. 다음에 정의된 인덱스 유형을 기반으로 생성됩니다. 쿼리에 나타나는 관계. 가능성은 언제나 있다 관계에 대해 순차 스캔을 수행하므로 다음을 사용하는 계획이 있습니다. 항상 순차 스캔만 생성됩니다. 인덱스가 다음과 같다고 가정합니다. 관계(예: B-트리 인덱스) 및 쿼리에 정의됨 제한 사항이 포함되어 있습니다.관계.속성 OPR 상수. 만일관계.속성다음의 키와 일치하는 경우가 있습니다. B-트리 인덱스 및OPR무엇이든 하지만 '<' B-트리 인덱스를 사용하여 다른 계획이 생성됩니다. 관계를 스캔합니다. 추가 인덱스가 존재하는 경우 쿼리의 제한 사항이 인덱스 키와 일치하는 경우 추가 계획을 고려할 것입니다.

단일 스캔을 위한 모든 실행 가능한 계획을 찾은 후 관계, 관계 결합 계획이 생성됩니다. 는 플래너/옵티마이저는 매 두 개 사이의 조인만 고려합니다. 해당 조인 절이 존재하는 관계 (즉, 다음과 같은 제한이 있습니다.어디에서 rel1.attr1=rel2.attr2존재) where 자격이 있습니다. 고려된 모든 조인 쌍에 대해 가능한 모든 계획이 생성됩니다. 플래너/옵티마이저에 의해. 세 가지 가능한 조인 전략 다음은:

  • 중첩된 반복 조인: 오른쪽 관계는 발견된 모든 튜플에 대해 한 번 검색됩니다. 왼쪽 관계. 이 전략은 실행하기 쉽지만 시간이 많이 걸립니다.

  • 병합 정렬 조인: 각 관계 조인이 시작되기 전에 조인 속성에 따라 정렬됩니다. 그런 다음 두 관계는 다음과 같이 병합됩니다. 두 관계 모두 조인 시 주문되는 계정 속성. 이런 종류의 조인이 더 매력적입니다. 모든 관계는 한 번만 스캔되어야 합니다.

  • 해시 조인: 올바른 관계 먼저 조인 속성에 대해 해시됩니다. 다음은 왼쪽 관계가 스캔되고 각 항목의 적절한 값이 검색됩니다. 발견된 튜플은 튜플을 찾기 위한 해시 키로 사용됩니다. 올바른 관계입니다.

2.5.2. 데이터 계획의 구조

여기서 노드에 대해 약간 설명하겠습니다. 계획에 등장합니다. 그림 \refplan은 계획을 보여줍니다. 예제 \refsimple_select의 쿼리에 대해 생성되었습니다.

계획의 최상위 노드는 aMergeJoin두 개의 후속 노드가 있는 노드, 하나 필드에 첨부됨왼쪽나무그리고 두 번째 필드에 연결됨오른쪽나무. 각 하위 노드는 하나를 나타냅니다. 조인의 관계. 위에서 언급했듯이 병합 정렬 조인 각 관계를 정렬해야 합니다. 이것이 바로 우리가 a를 찾는 이유입니다.정렬각 하위 계획의 노드. 는 쿼리에 제공된 추가 자격(s.sno 2)을 최대한 아래로 밀어냅니다. 에 첨부되어 있습니다.qpqual필드 나뭇잎SeqScan노드 해당 하위 계획.

필드에 첨부된 목록병합절MergeJoin노드에는 다음에 대한 정보가 포함되어 있습니다. 조인 속성. 값65000그리고65001에 대한바르노필드VAR노드가 다음에 표시됨병합절목록(또한대상 목록) 뜻 현재 노드의 튜플을 고려해서는 안 됩니다. 하지만 다음 "더 깊은" 노드의 튜플(즉, 최상위 노드) 대신 하위 계획)을 사용해야 합니다.

다음에 유의하세요.정렬그리고SeqScan그림 \refplan에 표시된 노드에는 를 얻었다대상 목록그러나 거기에 있었기 때문에 공간이 부족합니다. 해당 공간만 해당MergeJoin노드를 그릴 수 있습니다.

플래너/옵티마이저가 수행하는 또 다른 작업은 수정 중입니다운영자 ID에서특급그리고오퍼노드. 다음과 같이 앞서 언급한,토토 꽁 머니다양한 데이터 유형은 물론 사용자까지 지원합니다. 정의된 유형을 사용할 수 있습니다. 엄청난 규모를 유지할 수 있도록 저장해야 하는 함수와 연산자의 양 시스템 테이블에서. 각 함수와 연산자는 고유한 값을 갖습니다. 운영자 아이디 사용된 속성의 유형에 따라 자격 등 내에서 해당 운영자 ID 사용해야 합니다.