쿼리 성능은 많은 것들의 영향을받을 수 있습니다. 일부PostgreSQL성능.
PostgreSQLa쿼리 계획각 쿼리마다 제공됩니다.플래너좋은 계획을 선택하려고합니다. 너스포츠 토토 : 문서 : 8.1 : 설명Planner가 어떤 쿼리 계획을 세우는 지 확인하는 명령
쿼리 계획의 구조는의 나무입니다.계획 노드. 하단 레벨의 노드는 테이블입니다"위"수행 할 스캔 노드토토 사이트계획의 각 노드마다 하나의 줄이 있습니다
여기에 출력이 무엇인지 보여주기 위해 사소한 예가 있습니다.[1]
토토 사이트 *에서 10에서 선택하십시오.
인용 한 숫자토토 사이트are :
추정 시작 비용 (출력 전 시간
예상 총 비용 (모든 행을 검색 해야하는 경우,Limit조항은 부족합니다Limit계획 노드 입력 노드 계획)
이 계획 노드에 의한 추정 행 출력 수
행 출력의 평균 폭 (바이트)
비용은 디스크 페이지의 단위로 측정됩니다. 저것섹션.)
상위 수준 노드의 비용이
행 출력은 약간 까다 롭기 때문에아님처리 된 행 수여기서-적용중인 클라스 조건
예제로 돌아 가기 :
토토 사이트 *에서 10에서 선택하십시오.
이것은 얻는 것만 큼 간단합니다. 그렇다면
relname = 'tenk1'; pg_class에서 reelpages, reltuples를 선택하십시오.
당신은 그것을 알게 될 것입니다Tenk1
358 개의 디스크 페이지와 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 |