이 명령은 실행 계획을 표시합니다.포스트그레SQL플래너가 다음을 생성합니다. 제공된 진술. 실행 계획은 테이블이 어떻게 실행되는지 보여줍니다. 명령문에서 참조하는 내용은 일반 순차 방식으로 검색됩니다. 스캔, 인덱스 스캔 등 - 여러 테이블이 참조되는 경우 필요한 것을 하나로 모으기 위해 어떤 조인 알고리즘이 사용될 것인가? 각 입력 테이블의 행입니다.
디스플레이의 가장 중요한 부분은 추정값입니다. 명령문 실행 비용. 이는 계획자가 어떻게 추측하는지에 대한 것입니다. 명령문을 실행하는 데 시간이 오래 걸립니다(디스크 단위로 측정됨). 페이지 가져오기). 실제로 두 개의 숫자가 표시됩니다: 시작 시간 첫 번째 행이 반환되기 전의 총 시간 모든 행을 반환합니다. 대부분의 쿼리에서 총 시간은 중요하지만 하위 쿼리와 같은 컨텍스트에서는존재함, 플래너는 가장 작은 것을 선택합니다. 최소 총 시간 대신 시작 시간(이후 어쨌든 실행자는 한 행을 얻은 후에 중지됩니다. 또한 만약 당신이 a로 반환할 행 수를 제한합니다.제한절, 기획자는 적절한 조치를 취합니다. 어떤 계획을 추정하기 위해 엔드포인트 비용 간 보간 정말 저렴해요.
그분석옵션으로 인해 계획된 문장이 아닌 실제로 실행되는 문장. 합계 각 계획 노드 내에서 소비된 경과 시간(밀리초) 및 실제로 반환된 총 행 수가 디스플레이. 이는 기획자의 계획 여부를 확인하는 데 유용합니다. 추정치가 현실에 가깝습니다.
중요:다음 진술을 명심하십시오 실제로 실행되는 경우분석이다 사용. 그래도사설 토토폐기하겠습니다 a선택그러겠다 반환하면 문의 다른 부작용이 다음과 같이 발생합니다. 평소. 이용을 원하시는 경우사설 토토하세요 분석에삽입, 업데이트, 삭제, 또는실행명령이 데이터에 영향을 주지 않도록 하는 명령문을 사용하세요. 이 접근 방식:
시작; 사설 토토 분석 ...; 롤백;
명령을 실행하고 실제 실행 시간을 보여주세요.
계획 트리의 전체 내부 표현을 표시합니다. 단순한 요약이 아니라. 일반적으로 이 옵션은 특수한 디버깅 목적에 유용합니다.상세출력은 예쁘게 인쇄되거나 아닙니다.의 설정에 따라 다릅니다.explain_pretty_print구성 매개변수.
모두선택, 삽입, 업데이트, 삭제, 값, 실행또는선언문, 그 실행 보고 싶은 계획을 세우세요.
최적화기의 사용에 대한 문서는 희박합니다. 비용 정보사설 토토. 참조PostgreSQL : 문서 : 8.2 : 토토 사이트 사용더 보기 정보.
허용하기 위해사설 토토합리적으로 만들 수 있는 쿼리 플래너 쿼리를 최적화할 때 정보에 입각한 결정을 내리세요.분석기록하려면 명령문을 실행해야 합니다. 테이블 내의 데이터 분포에 대한 통계입니다. 만약에 이 작업을 수행하지 않았습니다(또는 통계적 분포가 테이블의 데이터가 지난번 이후로 크게 변경되었습니다.분석실행됨), 예상 비용 쿼리의 실제 속성과 일치하지 않을 가능성이 높습니다. 결과적으로 열등한 쿼리 계획이 선택될 수 있습니다.
유전자 쿼리 최적화 (GEQO)는 실행 계획을 무작위로 테스트합니다. 따라서 테이블 수를 초과하는 경우geqo_threshold유전자 쿼리 최적화 유발 사용하려면 실행 계획이 매번 변경될 가능성이 높습니다. 명령문이 실행됩니다.
단일 테이블에 대한 간단한 쿼리에 대한 계획을 표시하려면정수열 및 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행)
물론 여기에 표시된 구체적인 숫자는 다음에 따라 다릅니다. 관련된 테이블의 실제 내용. 또한 숫자 및 선택한 쿼리 전략도 다를 수 있습니다.포스트그레SQL다음으로 인해 릴리스됨 플래너 개선. 게다가,분석명령은 무작위 샘플링을 사용하여 추정합니다. 데이터 통계; 따라서 비용 추정이 가능합니다. 새로 실행한 후 변경분석, 테이블의 실제 데이터 분포가 그렇지 않은 경우에도 변경되었습니다.