반응형
with recursive 는 재귀 쿼리 문법이다. 아래의 예시를 통해서 자세히 알아보자.
(아래 링크의 프로그래머스의 문제를 예시로 든 것이기 때문에, 자세한 문제는 아래를 참고하길 바람)
| 테이블
ecoli_data 테이블이 존재하고 부모-자식 관계를 나타내는 데이터가 저장되어 있다.
ID 1,2 는 1세대
ID 3,4,5 는 2세대
ID 6,7 은 3세대
ID 8 은 4세대
그럼 ID 를 기준으로 세대를 구하는 쿼리는 어떻게 짤 것인가?
with recursive 문법을 쓰면 쿼리는 다음과 같다.
| 쿼리 구조
1. 메모리 상에 가상의 테이블을 저장한다.
2. 최초에 기준이 되는 쿼리가 필요하다.
3. 반복하려는 쿼리를 UNION 으로 붙인다.
4. 반복쿼리가 종료되는 조건을 붙인다.
5. 반복되어 생성된 가상의 테이블을 사용한다.
| 동작 원리 (단계별)
그럼 어떻게 동작하는지 과정을 알아보자.
반응형
가장 기준이 되는 쿼리가 먼저 실행되고
gen_data 테이블에는 다음과 같은 데이터가 들어간다.
다음으로 반복구간 쿼리가 동작한다.
join 조건에 해당되는 데이터가 gen_data 테이블에 추가로 들어간다.
반복구간이 다시 동작하고 데이터가 들어간다.
반복구간이 다시 동작하고 데이터가 들어간다.
join 조건에 해당되는 게 더 이상 없기 때문에 반복문은 종료된다.
현업에서 개발하면서 with recursive 문법을 사용한 적이 없을 정도로 잘 쓰이는 문법은 아닌 듯 하다.
하지만 개념정도는 알아가면 좋을 것 같다..
반응형
'DataBase > Mysql' 카테고리의 다른 글
[ mysql ] join using 과 on 차이(각각 어디에 적절한가?) (0) | 2023.05.24 |
---|---|
[ mysql ] 예시로 보는 인덱스 (Index) 개념 완전 이해하기 (0) | 2023.01.05 |
[ mysql ] 기본키(Primary Key) 와 유니크키(Unique Key) 차이 (0) | 2022.01.25 |
[ mysql ] select insert 문법 + duplicate key 기본키 중복 해결 (1) | 2021.12.08 |
[ mysql ] merge update insert (0) | 2020.06.16 |