DB에서 문자열 조작하기 vs. 자바에서 문자열 조작하기

inhalin·2023년 5월 8일
0

일터지식

목록 보기
12/14

요약: 가독성이 좋은 쪽으로 + 성능에 유리한 쪽으로

주문 정보를 가져오는 기준으로 7일 전 15시를 사용하고 있다. 기존에는 쿼리문에 해당 부분을 계산하는 SQL이 작성되어 있었다.

# 기존 쿼리
SELECT * 
FROM tb1 
WHERE reg_date >= DATE_SUB(CAST(CONCAT(CAST(SYSDATE() AS DATE),' 15') AS DATETIME), INTERVAL 7 DAY)

근데 개인적으로는 기준이 되는 부분(DATE_SUB(...생략))을 바로 알아보기 어려웠고 하나하나 뜯어보고 나서야 알 수 있었다.

그리고 이런 날짜 기준은 정책상으로 변경될 수 있는 값이라고 보았다. 예를 들어 현재는 7일 전 15시 이후이지만 7일전 12시 이후 또는 3일 전, 15일 전 등으로 변경된다던지 말이다.

그래서 이 시간 계산을 자바단에서 해주도록 수정해주었다.

# 수정한 쿼리
SELECT *
FROM tb1 
WHERE reg_date >= #dateTime#
// 쿼리 조건으로 넘겨줄 날짜 및 시간 설정
LocalDateTime dateTime = LocalDateTime.of(
					LocalDate.now(),
       				LocalTime.of(15, 0)).minusDays(7));

정리

  • select 절에서는 쿼리 실행시에 데이터가 여러 개가 나올 수 있기 때문에 자바 단에서 날짜 포매팅하려면 스트림을 돌거나 반복문을 돌면서 데이터를 변경해줘야 한다.
  • 반면에 where 절에서 받은 날짜의 경우 한개만 받아서 사용하기 때문에 자바 단에서 날짜를 포매팅해서 넘겨주는 것이 읽기에 좋다.

질문

  • 어떤 때 어디서 사용하는 게 성능에 유리한지 판단하는 기준은? 직접 성능 테스트해보기?

0개의 댓글