김민희 Backend Developer 서비스의 목적을 이해하고, 안정적인 백엔드로 구현하는 개발자입니다. GitHub → Backend (2) 썸네일형 리스트형 복합 인덱스는 왜 컬럼 순서에 따라 달라질까? PostgreSQL 실행계획으로 확인하기 같은 두 컬럼의 순서만 바꾸고 데이터 분포와 규모를 변경하며 Scan·Sort·Buffer 차이를 비교한 과정 백엔드에서 조회 성능을 개선할 때 인덱스를 추가하는 경우가 많다. 그런데 조회에 사용하는 컬럼이 인덱스에 들어 있기만 하면 충분한지,같은 두 컬럼이라도 순서에 따라 실제 조회 방식이 달라지는지가 궁금했다.이번에는 게시글 상태와 생성 시간을 이용한 다음 조회를 기준으로 PostgreSQL 실행계획을 비교했다.SELECT id, status, created_atFROM post_index_experimentWHERE status = 'DELETED'ORDER BY created_at DESCLIMIT 20;비교한 복합 인덱스는 두 가지다.(status, created_at)(created_at, s.. JPA 연관관계 조회에서 발생한 N+1 문제 재현과 해결 과정 게시글 목록 API에서 게시글 제목과 작성자 이름을 함께 반환하는 기능을 만들었다.Post와 Member는 다대일 관계이고 연관관계는 LAZY로 설정했다. 기능은 정상적으로 동작했지만 Hibernate SQL 로그를 확인해보니 게시글을 조회한 뒤 members 테이블을 조회하는 SELECT가 반복되고 있었다. 이번에는 이 현상을 직접 재현하고 실제 SQL 횟수를 확인한 뒤 Fetch Join과 EntityGraph를 적용해 비교했다.마지막에는 Comment 컬렉션까지 Fetch Join해보면서 조회 쿼리를 한 번으로 줄이는 것이 항상 적절한지도 확인했다.1. 문제 발견 — 목록 조회 한 번에 SELECT가 11번 실행됐다실험 데이터는 다음과 같이 준비했다.데이터 개수Member10개Post100개 Pos.. 이전 1 다음