QueryDsl - 성능 개선
·
📦 Database/QueryDSL
QueryDsl 성능 개선 (+ JPQL 관련 이슈) exist 금지 SQL exists문은 조건을 만족하는 레코드를 1개 찾으면 바로 결과를 반환하고 쿼리를 종료한다. 반면 count(1)의 경우 마지막 레코드까지 검색을 하기 떄문에 성능이 낭비된다. 이런 성능차이는 스캔 대상이 앞에 위치할수록 더 심하게 발생될것이고, QueryDsl의 exists는 SQL의 count()>0 쿼리로 날린다. 이를 개선하기 위해 QueryDsl의 selectOne과 fetchFirst(= limit 1)을 사용해 직접 exists 쿼리를 구현한다. 주의할 점은 조회결과가 없으면 null이 반환되기 떄문에 0이 아닌 null로 체크를 해야 한다. 아래 코드로 exists를 직접 쿼리하자 SQL의 exists와 거의 동일..