[SQL] 쿼리 성능개선(쿼리 최적화- 속도개선)

지니·2023년 12월 8일
2

SQL

목록 보기
1/5

DB에서 데이터를 추출하거나 조작하기 위해 쿼리를 사용한다.
쿼리를 짤때, 효율적으로 짜지않으면 슬로우쿼리(조회하는 시간이 오래걸리는 쿼리)가 발생할 수 있다. 즉 성능이 저하되는 것이다.

특히 대용량 데이터나 복잡한 쿼리를 잘못 짤 경우 , 최적화 된 쿼리보다 시간이 몇배가 더 소요되기도 한다. 이에 SQL 쿼리를 튜닝할 필요가 있으며,
고려해야할 사항들이 있다.

1. 적절한 인덱스의 사용

  • 인덱스는 대용량 데이터베이스에서 데이터 검색속도를 향상시키는데 매우 큰 도움을 준다. WHERE절에서 사용하는 컬럼, 자주 조회되는 컬럼에 대해 인덱스를 생성하고 DB의 크기와 인덱스의 크기를 고려하여 적절한 크기의 인덱스를 생성하는 것이 중요하다.

2. 조인의 활용

  • JOIN은 두개의 테이블에서 데이터를 결합할때 사용한다. 하지만 JOIN을 적절하게 사용하지 않으면, DB성능에 영향을 미친다. JOIN의 순서, 어떤 JOIN을 사용, JOIN의 조건 등을 어떻게 주냐에 따라 달라지므로 적절한 JOIN을 선택하는 것이 좋다.

3. 서브쿼리의 최소화

  • 서브쿼리는 SELECT 문안에 또 다른 SELECT문이 있는 쿼리안의 쿼리를 말한다. 복잡한 쿼리를 작성할때 유용하지만 JOIN, UNION 등에 비해 사용시 성능이 떨어질 수 있어 주의가 필요하다.

4. 필요한 컬럼만 SELECT

  • SELECT 할때 많은 컬럼의 값을 불러올수록 DB는 더 많은 로드를 부담하게 된다. 그래서 되도록 필요한 컬럼만 SELECT 하는 것이 성능에 도움을 준다.

5. 같은 조건으로 GROUP BY 시 HAVING 보단 WHERE 절 사용

  • 쿼리 실행 순서에서 WHERE절이 HAVING 절보다 먼저 실행되는데, WHERE절에서 데이터의 크기를 작게 만들면 GROUOP BY 에서 다뤄야하는 크기가 작아지기 때문에 효율적인 연산이 가능하다.

6. WHERE절 조건 순서는 작은 범위부터

  • 앞서 얘기한 것과 비슷하게 WHERE절이 실행할때 앞에서부터 차례대로 실행되기 때문에 , 앞절에서 데이터의 크기를 작게만들면 뒤에 절에서 다뤄야하는 크기가 작아지기 떄문에 좀 더 효율적인 쿼리를 만들 수 있다.
profile
지니의 개발노트

0개의 댓글