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

38.1. 는 쿼리 토토 핫

규칙 시스템이 어떻게 작동하는지 이해하려면 다음 사항을 알아야 합니다. 호출되는 시기와 입력 및 결과는 무엇입니까?

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

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

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

읽을 때SQL이 장의 쿼리 토토 핫 표현이 필요합니다. 명령문이 분할되는 부분을 식별할 수 있는 경우 쿼리 토토 핫 구조에 있습니다. 쿼리 토토 핫의 일부 이다

명령 유형

이것은 어떤 명령인지 알려주는 간단한 값입니다(선택, 삽입, 업데이트, 삭제) 생산 쿼리 토토 핫.

범위 테이블

범위 테이블은 다음에서 사용되는 관계의 목록입니다. 쿼리. 에서선택진술은 이것이다 뒤에 주어진 관계발신키 단어.

모든 범위 테이블 항목은 테이블이나 보기를 식별하고 다음과 같이 알려줍니다. 쿼리의 다른 부분에서 호출되는 이름입니다. 에서 쿼리 트리에서는 범위 테이블 항목이 숫자로 참조됩니다. 이름보다 중복되므로 여기서는 중요하지 않습니다. 에서와 같은 이름을 지정합니다.SQL성명. 이는 규칙의 범위 테이블이 변경된 후에 발생할 수 있습니다. 병합되었습니다. 이 장의 예제에는 이 내용이 없습니다. 상황.

결과 관계

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

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

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

대상 목록

대상 목록은 결과를 정의하는 표현식 목록입니다. 쿼리의. a의 경우선택, 이러한 표현식은 최종 출력을 구성하는 표현식입니다. 쿼리. 키워드 사이의 표현에 해당합니다.선택그리고발신. (*은 단지 all the 관계의 열 이름입니다. 파서에 의해 다음으로 확장됩니다. 개별 열이므로 규칙 시스템에서는 이를 볼 수 없습니다.)

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

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

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

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

자격

쿼리의 자격은 다음 중 하나와 매우 유사한 표현식입니다. 대상 목록 항목에 포함된 항목입니다. 결과 값 이 표현식은 연산이 실행되는지 여부를 알려주는 부울입니다. (삽입, 업데이트, 삭제또는선택15837_15915어디에서절 의SQL성명.

조인 토토 핫

쿼리의 조인 토토 핫는 다음의 구조를 보여줍니다.발신절. 다음과 같은 간단한 쿼리의 경우a, b, c에서 ... 선택, 조인 토토 핫는 단지 의 목록발신항목, 왜냐하면 우리는 어떤 순서로든 합류할 수 있습니다. 하지만 언제가입표현식, 특히 외부 조인은 다음과 같습니다. 사용하면 조인에 표시된 순서대로 조인해야 합니다. 그 안에 이 경우 조인 토토 핫는의 구조를 보여줍니다.가입식. 관련된 제한사항 특별한가입절 (from켜짐또는사용 중표현) 해당 조인 토토 핫에 첨부된 자격 표현식으로 저장됩니다. 노드. 최상위 레벨을 저장하는 것이 편리한 것으로 나타났습니다.어디한정 표현 최상위 조인 토토 핫 항목에도 첨부됩니다. 그래서 실제로 가입 트리는 모두를 나타냅니다.발신그리고어디a의 절선택.

기타

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