이 명령은 실행 계획을 표시합니다.롤 토토플래너가 다음을 생성합니다. 제공된 진술. 실행 계획은 테이블이 어떻게 실행되는지 보여줍니다. 명령문에서 참조하는 내용은 일반 순차 방식으로 검색됩니다. 스캔, 인덱스 스캔 등---여러 테이블을 참조하는 경우 필요한 것을 하나로 모으기 위해 어떤 조인 알고리즘이 사용될 것인가? 각 입력 테이블의 행입니다.
디스플레이의 가장 중요한 부분은 추정값입니다. 명령문 실행 비용. 이는 계획자가 어떻게 추측하는지에 대한 것입니다. 명령문을 실행하는 데 시간이 오래 걸립니다(디스크 단위로 측정됨). 페이지 가져오기). 실제로 두 개의 숫자가 표시됩니다: 시작 시간 첫 번째 행이 반환되기 전의 총 시간 모든 행을 반환합니다. 대부분의 쿼리에서 총 시간은 중요하지만 하위 쿼리와 같은 컨텍스트에서는존재함, 플래너는 가장 작은 것을 선택합니다. 최소 총 시간 대신 시작 시간(이후 어쨌든 실행자는 한 행을 얻은 후에 중지됩니다. 또한 만약 당신이 a로 반환할 행 수를 제한합니다.제한절, 기획자는 적절한 조치를 취합니다. 어떤 계획을 추정하기 위해 엔드포인트 비용 간 보간 정말 저렴해요.
그분석옵션으로 인해 계획된 문장이 아닌 실제로 실행되는 문장. 합계 각 계획 노드 내에서 소비된 경과 시간(밀리초) 및 실제로 반환된 총 행 수가 디스플레이. 이는 기획자의 계획 여부를 확인하는 데 유용합니다. 추정치가 현실에 가깝습니다.
중요:다음 진술을 명심하십시오 실제로 실행되는 경우분석이다 사용. 그래도롤 토토폐기하겠습니다 a선택아마도 반환하면 문의 다른 부작용이 다음과 같이 발생합니다. 평소. 이용을 원하시는 경우롤 토토하세요 분석에삽입, 업데이트, 삭제또는실행명령이 데이터에 영향을 주지 않도록 하는 명령문을 사용하세요. 이 접근 방식:
시작; 롤 토토 분석 ...; 롤백;
명령을 실행하고 실제 실행 시간을 표시합니다.
계획 트리의 전체 내부 표현을 표시합니다. 단순한 요약이 아니라. 일반적으로 이 옵션은 디버깅에 유용함포스트그레SQL.상세출력은 예쁘게 인쇄되거나 아닙니다.의 설정에 따라 다릅니다.explain_pretty_print구성 매개변수입니다.
모두선택, 삽입, 업데이트, 삭제, 실행또는선언실행 계획을 보고 싶은 성명입니다.
최적화기의 사용에 대한 문서는 희박합니다. 비용 정보포스트그레SQL. 참조섹션 13.1더 많은 정보를 원하시면.
허용하기 위해롤 토토합리적으로 만들 수 있는 쿼리 플래너 쿼리를 최적화할 때 정보에 입각한 결정을 내리세요.분석기록하려면 명령문을 실행해야 합니다. 테이블 내의 데이터 분포에 대한 통계입니다. 만약에 이 작업을 수행하지 않았습니다(또는 통계적 분포가 테이블의 데이터가 지난번 이후로 크게 변경되었습니다.분석실행됨), 예상 비용 쿼리의 실제 속성과 일치하지 않을 가능성이 높습니다. 결과적으로 열등한 쿼리 계획이 선택될 수 있습니다.
이전롤 토토7.3, 계획은 a 형식으로 내보내졌습니다.공지메시지. 이제 쿼리 결과로 나타납니다(테이블 형식으로 지정됨). 단일 텍스트 열 포함).
단일 테이블에 간단한 쿼리에 대한 계획을 표시하려면정수열 및 10000행:
롤 토토 SELECT * FROM foo;
쿼리 계획
-------------------------------
foo의 시퀀스 스캔(비용=0.00..155.00행=10000너비=4)
(1행)
색인이 있고 색인 생성이 가능한 쿼리를 사용하는 경우어디조건,롤 토토다른 계획이 표시될 수 있습니다.
EXPLAIN SELECT * FROM foo WHERE i = 4;
쿼리 계획
------------------------------------
foo에서 fi를 사용한 인덱스 스캔(비용=0.00..5.98행=1너비=4)
지수 조건: (i = 4)
(2행)
다음은 다음을 사용하는 쿼리에 대한 쿼리 계획의 예입니다. 집계 함수:
EXPLAIN SELECT sum(i) FROM foo WHERE i < 10;
쿼리 계획
--------------------------------------------------------
집계(비용=23.93..23.93행=1너비=4)
- foo에서 fi를 사용하여 인덱스 스캔(비용=0.00..23.92행=6너비=4)
지수 조건: (i < 10)
(3행)
다음은 사용 예입니다롤 토토하세요 실행준비된 실행 계획을 표시합니다. 쿼리:
PREPARE 쿼리(int, int) AS SELECT sum(bar) FROM 테스트
ID $1 AND ID < $2인 경우
그룹별로 foo;
EXPLAIN ANALYZE EXECUTE 쿼리(100, 200);
쿼리 계획
-----------------------------------------------------------------------------------------------
HashAggregate (비용=39.53..39.53 행=1 너비=8) (실제 시간=0.661..0.672 행=7 루프=1)
- 테스트 시 test_pkey를 사용한 인덱스 스캔(비용=0.00..32.97행=1311너비=8)(실제 시간=0.050..0.395행=99루프=1)
지수 조건: ((id $1) AND (id < $2))
총 런타임: 0.851ms
(4행)
물론 여기에 표시된 구체적인 숫자는 다음에 따라 다릅니다. 관련된 테이블의 실제 내용. 또한 숫자 및 선택한 쿼리 전략도 다를 수 있습니다.롤 토토다음으로 인해 릴리스됨 플래너 개선. 게다가,분석명령은 무작위 샘플링을 사용하여 추정합니다. 데이터 통계; 따라서 비용 추정이 가능합니다. 새로 실행한 후 변경분석, 테이블의 실제 데이터 분포가 그렇지 않은 경우에도 변경되었습니다.