안녕하세요! 이전에 업무를 진행할 때, 데이터를 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');
이 당시 REGDATE 컬럼이 그냥 출력을 했을 때 초/분단위로 안 나와서 이런식으로 작성을 했던 것으로 기억납니다😂
하지만 이 쿼리가 굉장히 오래걸리는 것이었다는 것...
(사실 저는 이 날 전에는 쿼리가 다 똑같은 쿼리라고 생각했지 속도에 영향을 미친다고 생각 못했어요(!멍청이!))
SELECT * FROM 테이블 WHERE REGDATE BETWEEN SYSDATE - 5/(24*60) AND SYSDATE;
조언을 듣고 개선된 쿼리는 위와 같았습니다! 그냥 형변환을 하지 않고 비교를 해도 되는 것이더라구요😐
이렇게 쿼리 개선을 할 수 있던 이유는 DBeaver(데이터베이스 관리 도구)가 쿼리 실행 시간 등을 알려줘서!저는 DBeaver을 이용해 쿼리의 시간을 측정했습니다
위와 같이 sql 편집기를 이용해 쿼리를 실행할 때에도 시간을 측정할 수 있지만(출력하면서 얼마나 걸리는 지 시간을 보여준다)
쿼리 관리자(윈도우 -> show view -> 쿼리 관리자)를 이용해 어떤 쿼리가 몇시에 얼만큼의 시간이 걸려서 소요가 됐는지를 확인할 수 있습니다!
처음 개발 단계에서 쿼리 실행 시간을 측정할 때 간편하게 위 방법을 사용할 수 있을 것 같네요
그럼 다들 즐코하세요!