이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 14.3. 명백한 토토 사이트 조항으로 토토 사이트 추천 제어버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

13.3. 명시 적으로 토토 사이트 추천 제어JoinClauses

쿼리 토토 사이트 추천를 어느 정도 제어 할 수 있습니다. 명시 적 사용Join구문. 보려면 이것이 중요한 이유, 우리는 먼저 약간의 배경이 필요합니다.

간단한 조인 쿼리에서

선택 *에서 a, b, c 여기서 a.id = b.id 및 b.ref = c.id;

토토 사이트 추천는 주어진 테이블에 어떤 순서로든 무료로 결합 할 수 있습니다. 을 위한 예를 들어, 그만큼여기서조건a.id = b.id, 그런 다음 C를 결합하여 합류했습니다 테이블, 다른 것을 사용여기서조건. 또는 B에 C에 가입 한 다음 A에 가입하여 해당 결과에 참여할 수 있습니다. 아니면 A에 가입 한 다음 B와 함께 할 수 있습니다. A와 C의 전체 직교 제품이 형성되어야합니다.여기서최적화를 허용하기위한 조항 가입. (모두에 합류합니다.PostgreSQL실행자는 두 입력 사이에 발생합니다 테이블이므로 결과를 하나 또는 이 패션 중 하나는 다른 결합 가능성은 의미 적으로 동등한 결과를 제공합니다 그러나 실행 비용이 크게 다를 수 있습니다. 따라서, 토토 사이트 추천는 가장 많이 찾기 위해 그들 모두를 탐험 할 것입니다. 효율적인 쿼리 계획.

쿼리에 2 ~ 3 개의 테이블 만 포함되면 많은 사람들이 걱정할 주문에 참여합니다. 그러나 가능한 가입의 수 테이블 수가 확장됨에 따라 주문은 기하 급수적으로 증가합니다. 10 개 정도의 입력 테이블을 넘어서 더 이상 실용적이지 않습니다. 모든 가능성에 대한 철저한 검색, 심지어 6 또는 7 개의 테이블 계획은 성가신 시간이 오래 걸릴 수 있습니다. 언제 입력 테이블이 너무 많습니다.PostgreSQL토토 사이트 추천가 전환됩니다 A에 대한 철저한 검색genetic제한된 수의 가능성을 통한 확률 검색. (스위치 오버 임계 값은에 의해 설정됩니다.geqo_threshold런타임 매개 변수.) 유전자 검색은 시간이 덜 걸리지 만 반드시 최상의 계획을 찾을 수는 없습니다.

쿼리에 외부 결합이 포함되면 토토 사이트 추천는 더 적습니다. 평범한 (내부) 가입에 대한 것보다 자유. 예를 들어, 고려하다

선택 * 왼쪽 조인 (b 조인 C on (b.ref = c.id)) on (a.id = b.id);

이 쿼리의 제한은 피상적으로 유사하지만 이전 예에 따라 의미론은 다르기 때문에 일치하는 행이없는 각 행에 행을 방출해야합니다. B와 C의 결합은 플래너에게 조인을 선택할 수 없습니다. 여기에서 주문하십시오 : B를 C에 가입 한 다음 A에 가입하여 해당 결과에 가입해야합니다. 따라서이 쿼리는 이전보다 계획하는 데 시간이 줄어 듭니다. 질문. 다른 경우, 플래너는 하나 이상의 가입 주문이 안전합니다. 예를 들어, 주어진

select *에서 왼쪽으로 b on (a.bid = b.id) left c on (a.cid = c.id);

a에 b 또는 c에 합류하는 것이 유효합니다. 현재 만전체 조인가입을 완전히 제한합니다 주문하다. 관련된 대부분의 실용 사례왼쪽 가입하다또는오른쪽 조인할 수 있습니다 어느 정도 재배치.

명시 적 내부 조인 구문 (내부 가입하다, 크로스 조인또는 undornedJoin)는 의미 적으로 동일합니다 입력 관계 나열From조인 순서를 제한하지 않습니다.

비록 대부분의 종류의Join하지 마십시오 조인 순서를 완전히 제한하면 지시 할 수 있습니다. 그만큼PostgreSQL쿼리 토토 사이트 추천 모두 대우Join제약 조항 어쨌든 가입 주문. 예를 들어이 세 가지 쿼리는입니다 논리적으로 동등한 :

선택 *에서 a, b, c에서 a.id = b.id 및 b.ref = c.id;
크로스 조인 B 크로스 조인 C에서 *를 선택하십시오. 여기서 a.id = b.id 및 b.ref = c.id;
(A.ID = B.ID); ON (A.ID = B.Id);

그러나 우리가 토토 사이트 추천에게 명예를 명예라고 말하면Join순서, 두 번째와 세 번째는 시간이 줄어 듭니다 첫 번째보다 계획하십시오. 이 효과는 걱정할 가치가 없습니다 단 3 개의 테이블이지만 많은 사람들이있는 생명의 은인이 될 수 있습니다. 테이블.

Planner가 조인 명령을 따르는 명령을 따라야합니다. 명백한Joins, 설정join_collapse_limit런타임 매개 변수는 1입니다. (다른 가능한 값이 논의됩니다 아래에.)

조인 순서를 완전히 제한 할 필요가 없습니다. 사용해도 괜찮기 때문에 검색 시간을 줄이는 주문Join평원 항목 내의 운영자From목록. 예를 들어, 고려

선택 *에서 크로스 조인 B, C, D, E WHERE ...;에서 선택하십시오.

withjoin_collapse_limit= 1, 이것 토토 사이트 추천가 다른 사람과 합류하기 전에 토토 사이트 추천가 A에 가입하도록 강요합니다. 테이블이지만 그렇지 않으면 선택을 제한하지는 않습니다. 이것에서 예를 들어, 가능한 조인 주문의 수는 5의 요인

이런 식으로 토토 사이트 추천의 검색을 제한하는 것은 유용합니다. 계획 시간을 줄이고 지시하는 기술 좋은 쿼리 계획에 대한 토토 사이트 추천. 토토 사이트 추천가 나쁜 결합을 선택하는 경우 기본적으로 주문하면를 통해 더 나은 순서를 선택하도록 강요 할 수 있습니다.Join구문 - 알고 있다고 가정합니다 더 나은 순서입니다. 실험이 권장됩니다.

계획 시간에 영향을 미치는 밀접하게 관련된 문제는 다음과 같습니다 하위 쿼리가 부모 쿼리로 붕괴됩니다. 예를 들어, 고려하다

선택 *
x, y,
    (a, b, c에서 * 선택) ss로서
something else;

이 상황은 가입하다; The View 'select규칙이 될 것입니다 보기 참조 대신에 삽입하여 쿼리를 많이 산출합니다. 위와 같습니다. 일반적으로 토토 사이트 추천는 붕괴를 시도합니다 부모로의 하위 쿼리, 양보

선택 *에서 x, y, a, b, c 어디서 무언가와 무언가 else;

이것은 일반적으로 계획보다 더 나은 계획을 초래합니다. 하위 쿼리. (예를 들어, 외부여기서조건은 x를 결합하는 것일 수 있습니다 먼저 A의 많은 행을 제거하므로 형성 할 필요가 없습니다. 하위 퀘스트의 전체 논리 출력.) 동시에, 우리는 계획 시간을 늘 렸습니다. 여기에는 5 방향이 있습니다 두 개의 별도 3 방향 조인 문제를 대체하는 문제가 결합됩니다. 가능성 수의 기하 급수적 인 성장으로 인해 이것은 큰 차이를 만듭니다. 플래너는 얻는 것을 피하려고합니다 하위 쿼리를 무너 뜨리지 않음으로써 큰 ​​가입 검색 문제에 갇혀 더 이상from_collapse_limit From항목은 부모가됩니다 질문. 계획 품질에 대해 계획 시간을 거래 할 수 있습니다. 이 런타임 매개 변수를 위 또는 아래로 조정합니다.

from_collapse_limitandjoin_collapse_limit거의 똑같은 일을하기 때문에 비슷하게 이름이 지정됩니다. 토토 사이트 추천가있을 때 컨트롤"평평합니다 밖으로"subselects 및 다른 컨트롤은 그렇습니다 명백한 결합을 평평하게하십시오. 일반적으로 당신은 설정합니다join_collapse_limit동일from_collapse_limit(따라서 명백한 결합 및 subselects 비슷하게 행동) 또는 setjoin_collapse_limitto 1 (제어하려는 경우 명시 적 조인과 함께 주문). 그러나 당신은 그들을 설정할 수 있습니다 다르게 계획 시간과 달리기 시간.