현재 회사에서 내가 맡은 시스템에 조회 성능이 안 좋은 부분이 있다. 이 때문에 업무에 불편함을 느낀다는 불만이 있어서 틈틈이 최적화를 해볼까 한다.
쿼리 성능 최적화는 처음이라, 공부하면서 진행 방법을 기록하려고 글을 남긴다.
[1단계] 어디가 느린지 찾기
[2단계] 왜 느린지 보기
[3단계] 고치고 확인하기
실행계획에서 보이는 것
| 인덱스가 있는데 FULL SCAN | 조건절 좌변(컬럼)에 함수나 연산을 쓰지 말고 우변 값을 바꾼다. OR 대신 UNION 사용을 검토한다. |
| 많이 읽고 결과는 적음 | WHERE 조건으로 필요한 데이터만 조회한다. 꼭 필요한 행과 컬럼만 가져온다. |
| 서브쿼리가 행마다 반복 실행됨 | 서브쿼리를 줄이고 JOIN, EXISTS, UNION으로 대체한다. |
| 큰 테이블부터 조인함 | JOIN 순서를 확인한다. 작은 결과를 먼저 만드는 쪽이 유리하다. |
좌변 연산 예시:
-- 인덱스 사용 불가
WHERE TO_CHAR(REG_DT, 'YYYYMMDD') = '20261010'
-- 인덱스 사용 가능
WHERE REG_DT >= TO_DATE('20261010', 'YYYYMMDD')
AND REG_DT < TO_DATE('20261010', 'YYYYMMDD') + 1
참고:
https://community.heartcount.io/ko/query-optimization-tips/
SQL 쿼리 성능 최적화를 위한 튜닝 팁 6가지 (Query Optimization)
보다 효율적인 데이터 검색 및 추출을 위해 필요한 SQL 쿼리 튜닝 방법을 알려 드려요. 실무에서 더 빠르고 효과적으로 데이터를 처리할 수 있도록 하는 꿀팁 6가지에 대해 알아 보세요.
community.heartcount.io
https://chung-develop.tistory.com/145
SQL 쿼리 튜닝하는 여러가지 방법
SQL 쿼리는 데이터베이스에서 데이터를 추출하거나 조작하는 데 사용됩니다. 그러나 대용량 데이터나 복잡한 쿼리의 경우 성능이 저하될 수 있습니다. 이러한 문제를 해결하기 위해 SQL 쿼리를
chung-develop.tistory.com