InnoDB에서 쿼리 분할해 성능 개선하기
·
프로그래밍
서론이전에 ETL 작업을 하면서 대량의 데이터를 조회할 때 다음과 같은 단일 쿼리를 사용한 적이 있다.SELECT *FROM AINNER JOIN B ON A.b_id = B.idINNER JOIN C ON A.c_id = C.idWHERE A.updated_at = '2025-01-01';이 쿼리로 한번에 모든 데이터를 가져오려고 했는데 A 테이블이 데이터 양이 많고 실제로는 조인문도 10개가 넘어서 실행시간이 몇분이 걸렸다. 이를 해결하기 위해 쿼리를 두 단계로 분리하는 방식을 사용했다. 먼저 조건에 맞는 id만 조회한 후, 그 id 목록을 이용해 실제 데이터를 가져오는 방식이다.# 첫번째 쿼리 SELECT idFROM AWHERE updated_at = '2025-01-01';# 두번째 쿼리 SEL..