같은 화면인데 아래에 있는 화면은 목록을 눌러서 조회했을때, 속도가 1.63s

 

해당 화면에 조회버튼을 눌렀을 때 (캐시가 있는 상태), 588ms

이게 무슨 일이야.. 싶어 

로그를 찍어 WinMerge를 해주었다.

그랬더니 차이나는 부분은 이것,,

(목록을 클릭해서 나오는 log)

WHERE 날짜 >= COALESCE(NULL, TO_CHAR(NOW() - interval '1 months', 'YYYY-mm-dd')
  AND 날짜 <= COALESCE(NULL, TO_CHAR(NOW(), 'YYYY-mm-dd')

 

(캐시가 남아있는 상태에서 조회 버튼 클릭했을때 log)

WHERE 날짜 >= COALESCE('2022-02-17', TO_CHAR(NOW() - interval '1 months', 'YYYY-mm-dd')
  AND 날짜 <= COALESCE('2022-03-17', TO_CHAR(NOW(), 'YYYY-mm-dd')

 

아차 싶었다.

프론트에서 처음 조회할 때, 스크립트로 오늘부터 1달 이전~오늘 날짜까지 

날짜 <![CDATA[>=]]> COALESCE(#{선택한 시작 날짜}, to_char(now()- interval '1 months', 'YYYY-mm-dd'))
						 AND occrrnc_de <![CDATA[<=]]> COALESCE(#{선택한 종료 날짜}, to_char(now(), 'YYYY-mm-dd')

 

그래서,,

해당 쿼리를 db관리도구인 DBeaver에서 COALESCE(null, to_char(날짜))실행시켜봤더니 아이디와 조회수만 가져오는데 677ms가 걸렸다.

 

그리고 COALESCE null이 아니라 옳은 날짜가 들어간 상태에서 실행을 해보니 180ms ..

데이터를 파싱해주는 to_char이라는 함수가 좀 느리다는 말을 듣기는 했지만.. 약 5배정도 걸렸다 .. 

 

그리고 혹시나 싶어 COALESCE함수를 제거해봤더니..

16ms ... 조금 배신당한 기분이랄까.....

ㅎㅎㅎ

여튼 이렇게 하나 또 알고 간다.

페이징 로딩 속도를 배이상 줄여서 솔직히 좀 즐겁다 히히

 

페이징 데이터 실행 속도를 줄이려면 자바 단 보다는 쿼리부터 수정하고 그다음에 소스코드를 수정해야겠다..

소스코드만 수정했는데도 이렇게 빨라질수가. ..

'sql > postgresql' 카테고리의 다른 글

[Postgresql] 같은 망일 때, 외부 접속 허용 설정하기  (0) 2022.03.29

+ Recent posts