이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다토토 핫 : 문서 : 17 : 14 장. 성능 팁버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

챕터

쿼리 성능은 많은 것들의 영향을받을 수 있습니다. 일부PostgreSQL성능.

13.1. 사용토토 사이트

PostgreSQLa쿼리 계획각 쿼리마다 제공됩니다.플래너좋은 계획을 선택하려고합니다. 너스포츠 토토 : 문서 : 8.1 : 설명Planner가 어떤 쿼리 계획을 세우는 지 확인하는 명령

쿼리 계획의 구조는의 나무입니다.계획 노드. 하단 레벨의 노드는 테이블입니다"위"수행 할 스캔 노드토토 사이트계획의 각 노드마다 하나의 줄이 있습니다

여기에 출력이 무엇인지 보여주기 위해 사소한 예가 있습니다.[1]

토토 사이트 *에서 10에서 선택하십시오.

인용 한 숫자토토 사이트are :

  • 추정 시작 비용 (출력 전 시간

  • 예상 총 비용 (모든 행을 검색 해야하는 경우,Limit조항은 부족합니다Limit계획 노드 입력 노드 계획)

  • 이 계획 노드에 의한 추정 행 출력 수

  • 행 출력의 평균 폭 (바이트)

비용은 디스크 페이지의 단위로 측정됩니다. 저것섹션.)

상위 수준 노드의 비용이

행 출력은 약간 까다 롭기 때문에아님처리 된 행 수여기서-적용중인 클라스 조건

예제로 돌아 가기 :

토토 사이트 *에서 10에서 선택하십시오.

이것은 얻는 것만 큼 간단합니다. 그렇다면

relname = 'tenk1'; pg_class에서 reelpages, reltuples를 선택하십시오.

당신은 그것을 알게 될 것입니다Tenk1358 개의 디스크 페이지와 10000 행이 있습니다. 따라서 비용은 추정됩니다CPU_TUPLE_COST일반적으로 0.01입니다 (try).

이제 쿼리를 수정하여 A여기서조건 :

10 <7000에서 tenk1에서 선택 *을 선택하십시오.

토토 사이트출력여기서조항이 적용 중입니다"필터"조건; 이것은 의미합니다여기서절. 그러나 스캔은 여전히 ​​가질 것입니다여기서조건.

이 쿼리가 선택한 실제 행 수는 7000입니다.분석분석

이제 조건을보다 제한적으로 만들자 :

토토 사이트을 선택하십시오 * Tenk1 where ightor1 <100;

여기서 플래너는 2 단계 계획을 사용하기로 결정했습니다."비트 맵"노드 이름에 언급 된 것은

여기서조건은 선택적입니다"Simple"색인 스캔 계획 :

10 <3에서 10 <3;

이 경우 테이블 행이 색인 순서대로 가져옵니다.주문 by

다른 조건 추가여기서절 :

tenk1에서 extion *을 선택하십시오.

추가 조건StringU1 =출력 행 추정치를 줄이지 만 비용은 아닙니다StringU1절은 될 수 없습니다고유 한 1열). 대신 적용됩니다

사용 된 여러 열에 인덱스가있는 경우여기서, 플래너는 AN 및 OR을 사용하도록 선택할 수 있습니다.

Tenk1에서 선택 *을 선택하십시오.

그러나 이것은 두 인덱스를 모두 방문해야하므로 그렇지 않습니다

우리가 있었던 열을 사용하여 두 개의 테이블을 결합 해 보겠습니다.

토토 사이트 *에서 * TENK1 T1, TENK2 T2에서 t1.unique1 <100 및 t1.unique2 = t2.unique2;

이 중첩 루프 조인에서 외부 스캔은 동일한 비트 맵입니다.여기서고유 한 <해당 노드에서. 그만큼t1.unique2 =절은 아직 관련이 없으므로 그렇지 않습니다고유 2전류 값t2.unique2 =Constant. 그래서 우리는onique2 =에서 10에서 선택 *을 선택하십시오. 루프 노드의 비용은 기준으로 설정됩니다.

이 예에서 조인의 출력 행 카운트는 다음과 같습니다.여기서테이블 등을 모두 언급하는 조항어디서 ...

변형 계획을 보는 한 가지 방법은 플래너에게섹션. (이것은 조잡한 도구이지만 유용합니다. 참조PostgreSQL : 문서 : 8.1 : 명시 적 조인 조항으로 롤 토토 제어.)

set enable_nestloop = off;

이 계획은 100 개의 흥미로운 행을 추출 할 것을 제안합니다Tenk1동일한 오래된 색인 사용Tenk2,t1.unique2 = t2.unique2각각Tenk2행. 읽는 비용Tenk1해시 테이블을 설정하는 것은 전적으로입니다Tenk2. 가입의 총 시간 추정치아님10000 회 충전 232.35;

플래너의 정확도를 확인할 수 있습니다.토토 사이트. 이 명령은 실제로 쿼리를 실행합니다토토 사이트쇼. 예를 들어, 우리는 할 수 있습니다

토토 사이트을 토토 사이트하십시오 * 선택 * 선택 * TENK1 T1, TENK2 T2 여기서 t1.unique1 <100 및 t1.unique2 = t2.unique2;

"실제 시간"값은 실시간 밀리 초에 있지만"비용"추정치가 표현됩니다

일부 쿼리 계획에서는 하위 플랜 노드가 가능합니다."루프""루프"실제로 총 시간을 얻는 값

총 런타임표시분석집행자 포함select쿼리, the삽입, 업데이트삭제명령, 총 실행 시간

주목할 가치가 있습니다토토 사이트결과는

노트

[1]

이 섹션의 예는 회귀에서 가져옵니다진공23420_23622분석's