39.1. 쿼리 트리#

규칙 시스템이 어떻게 작동하는지 이해하려면 언제 호출 될시기와 입력 및 결과가 무엇인지 알아야합니다.

규칙 시스템은 파서와 플래너 사이에 있습니다. 구문 분석기, 하나의 쿼리 토토 꽁 머니 및 사용자 정의 재 작성 규칙의 출력이 필요합니다.이 규칙은 추가 정보가 포함 된 토토 꽁 머니를 쿼리하고 결과적으로 0 이상의 쿼리 토토 꽁 머니를 생성합니다.SQL진술.

이제 쿼리 토토 꽁 머니는 무엇입니까? 그것은 내부 표현입니다SQL구축 된 단일 부품이 별도로 저장되는 명령문. 구성 매개 변수를 설정하면 이러한 쿼리 토토 꽁 머니가 서버 로그에 표시 될 수 있습니다debug_print_parse, debug_print_rewritten또는debug_print_plan. 규칙 조치는 시스템 카탈로그에서 쿼리 토토 꽁 머니로 저장됩니다pg_rewrite. 로그 출력과 같이 형식화되지는 않지만 정확히 동일한 정보를 포함합니다.

원시 쿼리 토토 꽁 머니를 읽는 데 약간의 경험이 필요합니다. 하지만 이후SQL쿼리 토토 꽁 머니의 표현은 규칙 시스템을 이해하기에 충분합니다.이 장은이를 읽는 방법을 가르치지 않습니다.

읽을 때SQL쿼리 토토 꽁 머니의 표현이 장에서는 쿼리 토토 꽁 머니 구조에있을 때 문장이 깨지는 부분을 식별 할 수 있어야합니다. 쿼리 토토 꽁 머니의 일부는

명령 유형

이것은 어떤 command (를 알려주는 간단한 값입니다.select, 삽입, 업데이트, 삭제) 쿼리 토토 꽁 머니를 생성했습니다.

범위 테이블

범위 테이블은 쿼리에 사용되는 관계 목록입니다. 에서select진술 이들은 이후에 주어진 관계입니다.From키 단어.

모든 범위 테이블 항목은 테이블이나 뷰를 식별하고 쿼리의 다른 부분에 어떤 이름이 호출되는지 알려줍니다. 쿼리 트리에서 범위 테이블 항목은 이름이 아닌 숫자로 참조되므로 여기서는와 같이 중복 이름이 있는지 여부는 중요하지 않습니다.SQL진술. 이것은 규칙의 범위 테이블이 병합 된 후에 발생할 수 있습니다.이 장의 예제에는이 상황이 없습니다.

결과 관계

이것은 쿼리 결과가 어디로 가는지를 식별하는 범위 테이블에 대한 색인입니다.

select쿼리에는 결과 관계가 없습니다. (특별한 경우대부분 동일합니다테이블 생성이후삽입 ... 선택, 여기에서 별도로 논의되지 않습니다.)

for삽입, 업데이트삭제명령, 결과 관계는 변경 사항이 적용되는 표 (또는보기)입니다.

대상 목록

대상 목록은 쿼리 결과를 정의하는 표현 목록입니다. A의 경우select,이 표현식은 쿼리의 최종 출력을 구축하는 표현입니다. 그들은 핵심 단어 사이의 표현에 해당합니다selectandFrom. (*는 관계의 모든 열 이름에 대한 약자 일뿐입니다. 파서에 의해 개별 열로 확장되므로 규칙 시스템은 결코 볼 수 없습니다.)

삭제명령은 결과를 생성하지 않기 때문에 일반 대상 목록이 필요하지 않습니다. 대신, 플래너는 특별한 것을 추가합니다CTID빈 대상 목록에 입력하여 집행자가 삭제할 행을 찾을 수 있도록합니다. (CTID결과 관계가 일반 테이블 인 경우 추가됩니다. 보기 인 경우, 전체 열 변수가 대신 규칙 시스템에 의해 추가됩니다.섹션 39.2.4.)

for삽입명령, 대상 목록은 결과 관계에 들어가야하는 새 행을 설명합니다. 그것은의 표현으로 구성됩니다.조항 또는select조항삽입 ... 선택. 다시 쓰기 프로세스의 첫 번째 단계는 원래 명령에 의해 할당되지 않았지만 기본값이있는 모든 열에 대한 대상 목록 항목을 추가합니다.

for업데이트명령, 대상 목록은 이전 행을 대체 해야하는 새 행을 설명합니다. 규칙 시스템에는의 표현 만 포함됩니다.set column = expression명령의 일부. 플래너는 이전 행의 값을 새 제품으로 복사하는 표현식을 삽입하여 누락 된 열을 처리합니다.삭제, aCTID또는 전체 열 변수가 추가되어 집행자가 업데이트 할 이전 행을 식별 할 수 있도록

대상 목록의 모든 항목에는 상수 값이 될 수있는 표현식, 범위 테이블의 관계 중 하나의 열을 가리키는 변수, 매개 변수 또는 함수 호출, 상수, 변수, 연산자 등의 표현식 트리를 포함합니다.

자격

쿼리의 자격은 대상 목록 항목에 포함 된 표현과 매우 유사합니다. 이 표현의 결과 값은 조작 여부를 알려주는 부울입니다 (삽입, 업데이트, 삭제또는select) 최종 결과 행의 경우 실행 여부를 실행해야합니다. 그것은에 해당합니다.여기서조항SQL진술.

가입 토토 꽁 머니

쿼리의 조인 토토 꽁 머니는의 구조를 보여줍니다.From절. 간단한 쿼리와 같은선택 ... A, B, C, 조인 토토 꽁 머니는의 목록 일뿐입니다.From항목. 하지만 언제Join표현, 특히 외부 조인 표현이 사용되며, 우리는 조인에 의해 표시된 순서대로 조인해야합니다. 이 경우 조인 토토 꽁 머니는의 구조를 보여줍니다.Join표현. 특정과 관련된 제한Join조항 (on또는사용Expressions)는 해당 조인 트리 노드에 첨부 된 자격 표현으로 저장됩니다. 최상위 수준을 저장하는 것이 편리한 것으로 판명여기서최상위 수준의 조인 트리 항목에 첨부 된 자격으로 표현. 그래서 실제로 결합 트리는 두 가지를 모두 나타냅니다.Fromand여기서A의 조항select.

다른 사람

쿼리 토토 꽁 머니의 다른 부분은주문절은 여기에 관심이 없습니다. 규칙 시스템은 규칙을 적용하는 동안 일부 항목을 대체하지만 규칙 시스템의 기본 사항과 관련이 없습니다.

정정 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면