728x90

WITH-RECURSIVE 2

[PostgreSQL] WITH RECURSIVE 심화 — 조직도/그래프 순회와 CYCLE 절로 순환 탐지

설치·접속: PostgreSQL 설치와 접속부제: 조직도를 재귀로 훑는데 데이터에 사이클이 섞여 무한 루프가 나고, UNION과 UNION ALL 중 뭘 써야 할지 헷갈릴 때재귀 CTE는 앵커(시작 행) + 재귀 항(자기 자신을 참조)으로 트리·그래프를 훑는다. 조직도부터 시작한다.CREATE TABLE org ( id int PRIMARY KEY, boss int REFERENCES org(id), name text);INSERT INTO org(id, boss, name) VALUES (1, NULL, 'CEO'), (2, 1, 'VP Eng'), (3, 1, 'VP Sales'), (4, 2, 'Eng Manager'), (5, 4, 'Backend Dev'), (6, 4, ..

명령어/DB 2026.07.22

[PostgreSQL] 재귀 CTE를 대체하는 계층 데이터 3가지 접근 — ltree vs connectby vs WITH RECURSIVE

설치·접속: PostgreSQL 설치와 접속부제: 카테고리 트리에서 "이 노드 아래 전부"를 뽑아야 하는데, 매번 재귀 CTE를 짜기가 지겨울 때같은 카테고리 트리를 세 가지 방식으로 저장·조회해 보고, 조회 편의와 성능이 어떻게 갈리는지 비교한다. 트리는 이렇게 생겼다.Top├─ Electronics│ ├─ Computers│ │ ├─ Laptops│ │ └─ Desktops│ └─ Phones└─ Books ├─ Fiction └─ Tech한 테이블에 adjacency-list용 parent_id와 ltree용 path를 같이 담아, 세 방식을 나란히 돌린다.CREATE EXTENSION IF NOT EXISTS ltree;CREATE EXTENSION IF NOT EXISTS ta..

명령어/DB 2026.07.21
728x90