이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 39.1. 쿼리 토토 핫 꽁 머니버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

38.1. 그만큼 쿼리 토토 핫

규칙 시스템의 작동 방식을 이해하려면 알아야합니다. 그것이 호출되고 입력과 결과가 무엇인지.

규칙 시스템은 파서와 플래너 사이에 있습니다. 구식의 출력, 하나의 쿼리 토토 핫 및 사용자 정의 재 작성 규칙, 일부는 쿼리 토토 핫입니다. 추가 정보를 제공하고 결과적으로 0 개 이상의 쿼리 토토 핫를 만듭니다. 그래서 입력과 출력은 항상 파서 자체가 할 수있는 것입니다. 생산되었으므로, 그것이 보는 것은 기본적으로 표현할 수 있습니다. 로SQL진술.

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

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

읽을 때SQL이 장에서 쿼리 토토 핫의 표현이 필요합니다. 부분을 ​​식별 할 수 있으려면 진술이 쿼리 토토 핫 구조에 있습니다. 쿼리 토토 핫의 일부 이다

명령 유형

이것은 어떤 명령 (에게 어떤 명령을 알려주는 간단한 값입니다.select, 삽입, 업데이트, 삭제) 제작 쿼리 토토 핫.

범위 테이블

범위 테이블은 질문. 에서select진술이게 이후에 제공된 관계From키 단어.

모든 범위 테이블 항목은 테이블 또는보기를 식별하고 쿼리의 다른 부분에서 호출됩니다. 에서 쿼리 트리, 범위 테이블 항목은 오히려 숫자로 참조됩니다. 이름보다, 따라서 중복이 있는지 여부는 중요하지 않습니다. 에서와 같이 이름SQL진술. 규칙의 범위 테이블이 합병되었습니다.이 장의 예제는 이것을 가지고 있지 않을 것입니다. 상황.

결과 관계

이것은 쿼리 결과가가는 관계.

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

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

대상 목록

대상 목록은 결과를 정의하는 표현 목록입니다. 쿼리의. A의 경우select, 이러한 표현은 질문. 그들은 핵심 단어 사이의 표현에 해당합니다selectFrom. (*는 모든 것에 대한 약자 일뿐입니다 관계의 열 이름. 파서에 의해 확장됩니다 개별 열이므로 규칙 시스템은 결코 보지 못합니다.)

삭제명령은 정상이 필요하지 않습니다 결과를 얻지 않기 때문에 대상 목록. 대신, 규칙 시스템이 특별 추가CTID빈 목표 목록 입력, 집행자가 삭제할 행. (CTIDIS 결과 관계가 일반 테이블 인 경우 추가됩니다. 그것이 있다면 보기, 전체 열 변수가 대신에 추가됩니다.섹션 38.2.4.)

for삽입명령, 대상 목록 결과 관계에 들어가야하는 새로운 행을 설명합니다. 그것 의 표현으로 구성됩니다.조항 또는select절 안에삽입 ... 선택. 첫 단계 다시 작성 프로세스는 모든 열에 대한 대상 목록 항목을 추가합니다. 원래 명령에 의해 할당되지 않았지만 기본값이 있습니다. 어느 나머지 열 (주어진 값이나 기본값이없는)은 끊임없는 귀무 표현으로 플래너로 채워야합니다.

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

대상 목록의 모든 항목에는 일정한 값이되며, 중 하나의 열을 가리키는 변수입니다. 범위 테이블의 관계, 매개 변수 또는 표현식 트리 기능 호출, 상수, 변수, 연산자 등으로 만들어졌습니다.

자격

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

가입 토토 핫

쿼리의 조인 토토 핫는의 구조를 보여줍니다.From절. 간단한 쿼리와 같은선택 ... A, B, C, 결합 토토 핫는 a입니다 목록From우리가 있기 때문입니다 어떤 순서로든 그들을 합류 할 수 있습니다. 하지만 언제Join표현, 특히 외부 결합은입니다 중고, 우리는 조인에 의해 표시된 순서대로 조인해야합니다. 그것에 케이스, 조인 토토 핫는의 구조를 보여줍니다.Join표현. 관련된 제한 특정한Join클로즈 (on또는사용표현) 조인 트리에 첨부 된 자격 표현으로 저장됩니다 노드. 최상위 수준을 저장하는 것이 편리한 것으로 판명여기서자격으로서의 표현 최상위 수준의 조인 트리 항목에도 첨부됩니다. 그래서 정말로 가입 나무는 둘 다를 나타냅니다.Fromand여기서A의 조항select.

다른 사람

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