from_collapse_limit
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | eight | user | integer |
| 15 | eight | user | integer |
| 16 | eight | user | integer |
| 17 | eight | user | integer |
| 18 | eight | user | integer |
| 19 | eight | user | integer |
planner가 서브쿼리를 상위 쿼리로 병합할 때, 병합 결과의 FROM 리스트 항목 수가 이 값 이하인 경우에만 병합한다. 기본값은 8이다.
서브쿼리를 상위로 끌어올리면 planner가 join 순서를 더 넓게 재배열할 수 있어 좋은 plan을 찾을 가능성이 커진다. 대신 FROM 항목이 늘어날수록 join 순서 탐색 공간이 급격히 커져 planning 시간이 길어진다. 값을 줄이면 planning은 빨라지지만 plan 품질이 떨어질 수 있고, 키우면 그 반대다.
이 값을 geqo_threshold 이상으로 올리면 병합 결과가 GEQO planner의 발동 조건에 걸려, exhaustive 탐색 대신 확률적 탐색이 쓰이면서 오히려 비최적 plan이 나올 수 있다. 명시적 JOIN 구문의 재배열을 다루는 join_collapse_limit와 짝을 이루며, 보통 함께 조정한다.
운영 노트: join이 많은 리포트성 쿼리에서 plan 품질이 아쉽다면 세션 단위로
from_collapse_limit과 join_collapse_limit을 함께 올려 exhaustive 탐색 범위를 넓혀 볼 수 있다. planning 시간 증가와 geqo_threshold 초과 시 GEQO 전환을 감안해야 한다.출처: PostgreSQL 18 문서