[SQL]DBeaver를 이용해 Query 실행 히스토리/실행 속도 확인하기

zzarbttoo·2021년 8월 4일
1

DB/Mybatis/JPA

목록 보기
3/7

안녕하세요! 이전에 업무를 진행할 때, 데이터를 SELECT 할 일이 있었는데,
SELECT가 정말 느리게 되는 상황이 있었습니다

다행히 다른 업무를 하는 주임님께 여쭤봐서 문제를 해결할 수 있었지만..
🤦‍♀️

| 문제

일단 어떤 문제가 있었나를 살펴보도록 하겠습니다
저는 현재 시간 5분 전에 저장이 된 데이터를 출력하도록 조건을 설정했는데요,

SELECT * FROM 테이블명 WHERE TO_CHAR(REGDATE, 'yyyymmdd hh24:mi:ss') BETWEEN 
TO_CHAR(SYSDATE - 5/(24*60) , 'yyyymmdd hh24:mi:ss') AND TO_CHAR(SYSDATE, 'yyyymmdd hh24:mi:ss');
  • 쿼리 실행시 로우 한 줄 실행할 때 마다 DATE 타입을 TO_CHAR로 형변환을 하는 과정을 세번이나 거쳐야 하기 때문에 DB에 불이 나서 엄청 느린 것이었다

이 당시 REGDATE 컬럼이 그냥 출력을 했을 때 초/분단위로 안 나와서 이런식으로 작성을 했던 것으로 기억납니다😂

하지만 이 쿼리가 굉장히 오래걸리는 것이었다는 것...
(사실 저는 이 날 전에는 쿼리가 다 똑같은 쿼리라고 생각했지 속도에 영향을 미친다고 생각 못했어요(!멍청이!))

| 개선

SELECT * FROM 테이블 WHERE REGDATE BETWEEN SYSDATE - 5/(24*60) AND SYSDATE;

조언을 듣고 개선된 쿼리는 위와 같았습니다! 그냥 형변환을 하지 않고 비교를 해도 되는 것이더라구요😐

이렇게 쿼리 개선을 할 수 있던 이유는 DBeaver(데이터베이스 관리 도구)가 쿼리 실행 시간 등을 알려줘서!저는 DBeaver을 이용해 쿼리의 시간을 측정했습니다


위와 같이 sql 편집기를 이용해 쿼리를 실행할 때에도 시간을 측정할 수 있지만(출력하면서 얼마나 걸리는 지 시간을 보여준다)

쿼리 관리자(윈도우 -> show view -> 쿼리 관리자)를 이용해 어떤 쿼리가 몇시에 얼만큼의 시간이 걸려서 소요가 됐는지를 확인할 수 있습니다!

처음 개발 단계에서 쿼리 실행 시간을 측정할 때 간편하게 위 방법을 사용할 수 있을 것 같네요
그럼 다들 즐코하세요!

profile
나는야 누워있는 개발머신

0개의 댓글