NL 조인

Database/SQL 튜닝

NL 조인 쿼리 튜닝

이번에는 생애 처음으로 토이 프로젝트의 쿼리를 튜닝해보았습니다. 프로젝트에서 제일 많이 호출되는 쿼리를 튜닝했는데 그 경험을 적어보겠습니다. 쿼리 튜닝 환경 M1 air RAM 16GB, SSD 512GB Docker 컨테이너 Mysql 8.x 버전 다대다 관계 튜닝하기 project라는 테이블과 member라는 테이블은 다대다 관계다. 중간 관계 테이블로 project_member라는 테이블이 존재한다. 테스트 데이터는 MySQL 프로시저를 활용해서 주입했으며 데이터 갯수는 아래와 같다. member: 200만 project: 500만 project_member: 1400만 먼저 쿼리를 살펴보자. 내가 참여한 모든 프로젝트를 조회하는 쿼리다. 디스코드 사이드 바에서 내가 참여한 모든 채팅방을 보여줄 때..

Database/SQL 튜닝

조인 튜닝 (1)

NL 조인 조인의 기본은 NL 조인이다. NL은 Nested Loops 조인의 약어다. 즉 중첩 루프문과 같은 수행 구조를 사용한다. 일반적으로 NL 조인은 Outer와 Inner 양쪽 테이블 모두 인덱스를 사용한다. Outer 쪽 테이블은 사이즈가 크지 않으면 인덱스를 이용하지 않을 수 있다. Table Full Scan 하더라도 그것은 한 번에 그치기 때문이다. Inner 쪽 테이블은 인덱스를 사용해야 한다. Inner 루프에서 외래키로 데이터를 검색할 때 인덱스를 이용하지 않으면, Outer 루프에서 읽은 건수만큼 Table Full Scan을 반복하기 때문이다. NL 조인은 '인덱스를 이용한 조인 방식'이라고 할 수 있다. 튜닝 포인트 Outer Table 인덱스를 읽고 나서 Outer Table..

Debin
'NL 조인' 태그의 글 목록