enable_indexonlyscan
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | on | user | boolean |
| 15 | on | user | boolean |
| 16 | on | user | boolean |
| 17 | on | user | boolean |
| 18 | on | user | boolean |
| 19 | on | user | boolean |
planner가 index-only scan plan을 후보로 고려할지 정한다. 기본값은 on이다. enable_indexscan도 켜져 있어야 index-only scan이 후보에 오른다.
index-only scan은 쿼리가 요구하는 컬럼이 전부 인덱스에 들어 있을 때 테이블(heap)을 읽지 않고 인덱스만으로 결과를 만드는 방식이다. 다만 row의 가시성 판단이 필요하기 때문에, visibility map에서 all-visible로 표시되지 않은 page에 대해서는 결국 heap을 확인해야 한다. 따라서 실제 효율은 vacuum이 visibility map을 얼마나 최신으로 유지하고 있느냐에 달려 있다.
운영 노트: off는 진단 용도다. index-only scan이 기대만큼 빠르지 않다면 먼저 EXPLAIN ANALYZE의 Heap Fetches 수치를 확인한다. 이 값이 크면 파라미터가 아니라 vacuum(visibility map 갱신) 쪽을 손봐야 한다.
출처: PostgreSQL 18 문서