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

37.1. 는 배트맨 토토 트리

규칙 시스템이 어떻게 작동하는지 이해하려면 다음이 필요합니다. 호출되는 시기와 입력 및 결과가 무엇인지 알 수 있습니다.

규칙 시스템은 파서와 플래너 사이에 위치합니다. 파서의 출력, 하나의 쿼리 트리 및 사용자 정의 재작성 규칙은 일부 쿼리 트리이기도 합니다. 추가 정보를 제공하고 0개 이상의 쿼리 트리를 생성합니다. 결과. 따라서 입력과 출력은 항상 파서의 것입니다. 그 자체로 생산할 수 있으므로 그것이 보는 모든 것은 기본적으로 다음과 같이 표현할 수 있습니다.SQL성명.

이제 배트맨 토토 트리란 무엇입니까? 내부 표현입니다 anSQL문은 그것이 만들어지는 단일 부품은 별도로 저장됩니다. 이것들 다음을 설정하면 쿼리 트리가 서버 로그에 표시될 수 있습니다. 구성 매개변수debug_print_parse, debug_print_rewrite또는debug_print_plan. 규칙 작업도 저장됩니다. 시스템 카탈로그의 배트맨 토토 트리로pg_rewrite. 로그와 같은 형식이 아닙니다. 출력되지만 정확히 동일한 정보가 포함되어 있습니다.

원시 배트맨 토토 트리를 읽으려면 약간의 경험이 필요합니다. 하지만 그 이후로SQL배트맨 토토 표현 트리는 규칙 시스템을 이해하기에 충분합니다. 이 장에서는 읽는 방법을 가르치지 않을 것입니다.

읽을 때SQL이 장의 쿼리 트리 표현은 다음과 같습니다. 진술서의 일부를 식별할 수 있어야 합니다. 쿼리 트리 구조에 있을 때 분할됩니다. 의 부분 쿼리 트리는

명령 유형

이것은 어떤 명령인지 알려주는 간단한 값입니다(선택, 삽입, 업데이트, 삭제)이 배트맨 토토 트리를 생성했습니다.

범위 테이블

범위 테이블은 다음에서 사용되는 관계의 목록입니다. 쿼리. 에서선택문장 이것은 다음의 관계이다.발신키워드.

모든 범위 테이블 항목은 테이블이나 보기를 식별하고 다른 부분에서는 어떤 이름으로 불리는지 알려줍니다. 쿼리. 쿼리 트리에서 범위 테이블 항목은 다음과 같습니다. 이름이 아닌 번호로 참조되므로 여기에 중복된 이름이 있어도 상관없습니다. anSQL성명. 이 규칙의 범위 테이블이 병합된 후에 발생할 수 있습니다. in. 이 장의 예제에는 이 내용이 없습니다. 상황.

결과 관계

이것은 다음을 식별하는 범위 테이블의 색인입니다. 쿼리 결과가 이동하는 관계입니다.

선택쿼리에 결과 관계. (특별한 경우선택대부분 동일함테이블 생성다음에 이어삽입 ... 선택이며 그렇지 않습니다. 여기에서 별도로 논의됩니다.)

삽입, 업데이트삭제명령, 결과 관계는 테이블(또는 뷰!)입니다. 변경 사항이 적용됩니다.

대상 목록

대상 목록은 다음을 정의하는 표현식 목록입니다. 쿼리 결과입니다. a의 경우선택, 이 표현은 쿼리의 최종 출력을 작성합니다. 그들은 다음에 해당합니다 키워드 사이의 표현선택그리고발신. (*은 단지 all의 약어일 뿐입니다. 관계의 열 이름. 에 의해 확장됩니다. 개별 열로 파싱하므로 규칙 시스템 본 적이 없습니다.)

삭제명령은 필요하지 않습니다. 결과가 생성되지 않기 때문에 일반 대상 목록입니다. 대신 규칙 시스템은 특별한CTID빈 대상 목록에 대한 항목, 실행자가 삭제될 행을 찾을 수 있도록 허용합니다. (CTID다음과 같은 경우에 추가됩니다. 결과 관계는 일반 테이블입니다. 뷰인 경우, 대신에 설명된 대로 전체 행 변수가 추가됩니다.섹션 37.2.4.)

삽입명령, 대상 목록은 결과에 포함되어야 하는 새 행을 설명합니다. 관계. 이는의 표현식으로 구성됩니다.절 또는 그 중 하나선택삽입 ... 선택. 첫 번째 단계는 재작성 프로세스는 모든 열에 대한 대상 목록 항목을 추가합니다. 원래 명령에 의해 할당되지 않았지만 기본값. 나머지 열(주어진 값 없음) 기본값도 아님)은 플래너가 다음과 같이 입력합니다. 상수 null 표현식입니다.

업데이트명령, 대상 목록은 이전 행을 대체해야 하는 새 행을 설명합니다. 것들. 규칙 시스템에는 다음 표현식만 포함됩니다. 에서SET 열 = 표현식명령의 일부입니다. 기획자가 누락된 부분을 처리할 것입니다. 값을 복사하는 표현식을 삽입하여 열 이전 행을 새 행으로 변환합니다. 마찬가지로삭제, 규칙 시스템이 다음을 추가합니다.CTID또는 전체 행 실행자가 이전 행을 식별할 수 있도록 변수 업데이트됩니다.

대상 목록의 모든 항목에는 표현식이 포함되어 있습니다 이는 상수 값, 즉 다음을 가리키는 변수일 수 있습니다. 범위 테이블의 관계 중 하나의 열, 매개변수 또는 함수 호출로 구성된 표현식 트리 상수, 변수, 연산자 등

자격

쿼리의 자격은 다음과 매우 유사한 표현식입니다. 대상 목록 항목에 포함된 것 중 하나입니다. 결과 이 표현식의 값은 다음을 나타내는 부울입니다. 작업(삽입, 업데이트, 삭제또는선택16781_16867어디an의 절SQL성명.

조인 트리

쿼리의 조인 트리는 다음의 구조를 보여줍니다.발신절. 간단한 배트맨 토토의 경우 좋아요a, b, c에서 ... 선택, 조인 트리는 단지 다음의 목록일 뿐입니다.발신항목, 가입이 허용되었기 때문입니다. 어떤 순서로든. 하지만 언제가입표현식, 특히 외부 조인이 사용됩니다. 조인에 표시된 순서대로 조인합니다. 그 경우, 조인 트리는의 구조를 보여줍니다.가입식. 제한사항 특정과 연관됨가입절 (from켜짐또는사용 중표현식)은 다음과 같이 저장됩니다. 해당 조인 트리에 첨부된 자격 표현식 노드. 최상위 레벨을 저장하는 것이 편리한 것으로 나타났습니다.어디표현식 최상위 조인 트리 항목에 첨부된 자격, 너무. 따라서 실제로 조인 트리는 다음과 같은 두 가지를 모두 나타냅니다.발신그리고어디a의 절선택.

기타

쿼리 트리의 다른 부분은 다음과 같습니다.주문 기준절은 여기서 관심이 없습니다. 는 규칙 시스템은 적용하는 동안 일부 항목을 대체합니다. 규칙은 있지만 그건 별로 관련이 없습니다. 규칙 시스템의 기본입니다.