쿼리 최적화

꽃봉우리·2024년 8월 5일

쿼리 최적화

쿼리 최적화는 데이터베이스 쿼리의 성능을 향상시키는 과정입니다. 주요 목표는 쿼리 실행 시간을 단축하고 리소스 사용을 줄이는 것입니다.

핵심 요소

  • 인덱스 사용: 적절한 인덱스를 생성하여 데이터 검색 속도를 높입니다.

  • 실행 계획 분석: 데이터베이스의 쿼리 실행 계획을 검토하여 비효율적인 부분을 식별합니다.

  • 쿼리 재작성: 복잡한 쿼리를 더 효율적인 형태로 재구성합니다.

  • 조인 최적화: 테이블 간 조인 순서와 방식을 최적화합니다.

  • 서브쿼리 최적화: 서브쿼리를 조인으로 변환하거나 더 효율적인 형태로 수정합니다.

  • 데이터 분할: 대규모 테이블을 smaller 파티션으로 나누어 관리합니다.

  • 캐싱: 자주 사용되는 쿼리 결과를 캐시하여 반복적인 계산을 줄입니다.

  • 통계 정보 최신화: 데이터베이스의 통계 정보를 주기적으로 업데이트하여 옵티마이저가 더 나은 실행 계획을 수립할 수 있도록 합니다.

사용법

  1. 인덱스 활용
  • 자주 검색되는 컬럼에 인덱스를 생성
CREATE INDEX idx_lastname ON employees(last_name);
  1. EXPLAIN 명령어 사용
  • 쿼리 실행 계획을 분석하여 비효율적인 부분을 찾음
EXPLAIN SELECT * FROM employees WHERE salary > 50000;

3.불필요한 DISTINCT와 서브쿼리 제거

  • DISTINCT나 서브쿼리는 때때로 성능을 저하시킬 수 있습니다. 가능하면 JOIN으로 대체하거나 제거
SELECT DISTINCT department_id 
FROM employees 
WHERE salary > (SELECT AVG(salary) FROM employees);

해당 쿼리를 다음과 같이 변경 가능

SELECT department_id 
FROM employees e
JOIN (SELECT AVG(salary) as avg_salary FROM employees) a
WHERE e.salary > a.avg_salary
GROUP BY department_id;

0개의 댓글