본문 바로가기
728x90

join2

[Spring] Querydsl 서브 쿼리 적용하기 JPQL은 FROM절의 서브 쿼리를 지원하지 않는다. JPQL에서 지원하지 않는다는 것은 Querydsl도 동일하게 지원하지 않는다는 것이다. 그래서 서브 쿼리를 충족시키기 위해 Querydsl에 우회 코드를 만들어보자. SELECT * FROM shop s join (SELECT id FROM shop where id < 100 ORDER BY id LIMIT 10, 10) as tmp on tmp.id = s.id 위의 서브 쿼리 조건을 아래와 같이 Querydsl에 적용하였다. Cluster Key(PK)를 커버링 인덱스로 빠르게 조회한 PK 값들을 Where 절에 적용하여 별도로 필요한 SELECT 칼럼들을 추가 조회하였다. 즉, 위의 쿼리에서는 where, orderBy, limit 절 까지는 .. 2022. 11. 24.
[Spring] Querydsl Join 성능 개선 Querydsl exists 성능 개선에 이어서 Querydsl Join에 대한 글을 정리해보려고 한다. 일단 Cross Join에 대해서 간단하게 정리해보자 Cross Join은 상호 조인이라 불리며, 한 테이블의 모든 컬럼들과 다른 테이블의 모든 컬럼들을 조인되는 기능이며 성능상 잘 나오지 않는다. 두 테이블의 나올 수 있는 모든 경우의 수를 대상으로 하기 때문에 성능이 좋을 수 없다. 그래서 Cross Join은 피하는 게 좋다. 왜 Cross Join을 이야기하는가? 오늘 성능 개선에 대한 내용의 주인공이다. 테스트용 @OneToOne 세팅 Member Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTI.. 2022. 11. 21.
300x250