SQL 복잡도 줄이기!

0

SQL

목록 보기
11/11
SELECT count(*) FROM A
     * JOIN B  ON A.id = B.id
     * JOIN C ON A.id = C.id
     * WHERE u.grade="정회원" and g.sido = "서울시" and g.sigungu ="서구" and g.dong = "얌얌동"
     * and DATE_FORMAT(ud.created_at, "%Y-%m-%d") = CURDATE() and ud.deleted_at = NULL;
  • 위의 SQL문을 queryDSL로 변경하려고 하다가, DATE_FORMAT 쪽에서 막혔다.
  • DATE_FORMAT을 queryDSL 로 어떻게 바꿀 수 있을지 찾아보다가 김영한님 글 을 보게됐다.
    -> SQL의 복잡도를 줄이고 애플리케이션 코드를 적극적으로 활용하는 게 중요하다.
    SQL로 날짜 형식 받아서 변형하려고 하지말고, 애플리케이션단에서 변수설정해서 between 으로 설정해라~

kotlin

var now = LocalDateTime.now()
        var today = LocalDateTime.of(now.year, now.month, now.dayOfMonth, 0 , 0 , 0) // 오늘 날짜

queryDSL

return from(user)
            .where(A.grade.eq("정회원")
                .and(A.B.sido.eq(sido))
                .and(A.B.sigungu.eq(sigungu))
                .and(A.B.dong.eq(dong))
                .and(A.C.createdAt.after(today))
                .and(A.deleted.eq(false))
            ).
                fetch()
profile
백엔드를 공부하고 있습니다.

0개의 댓글

관련 채용 정보