쿼리 최적화는 데이터베이스 쿼리의 성능을 향상시키는 과정입니다. 주요 목표는 쿼리 실행 시간을 단축하고 리소스 사용을 줄이는 것입니다.
인덱스 사용: 적절한 인덱스를 생성하여 데이터 검색 속도를 높입니다.
실행 계획 분석: 데이터베이스의 쿼리 실행 계획을 검토하여 비효율적인 부분을 식별합니다.
쿼리 재작성: 복잡한 쿼리를 더 효율적인 형태로 재구성합니다.
조인 최적화: 테이블 간 조인 순서와 방식을 최적화합니다.
서브쿼리 최적화: 서브쿼리를 조인으로 변환하거나 더 효율적인 형태로 수정합니다.
데이터 분할: 대규모 테이블을 smaller 파티션으로 나누어 관리합니다.
캐싱: 자주 사용되는 쿼리 결과를 캐시하여 반복적인 계산을 줄입니다.
통계 정보 최신화: 데이터베이스의 통계 정보를 주기적으로 업데이트하여 옵티마이저가 더 나은 실행 계획을 수립할 수 있도록 합니다.
CREATE INDEX idx_lastname ON employees(last_name);
EXPLAIN SELECT * FROM employees WHERE salary > 50000;
3.불필요한 DISTINCT와 서브쿼리 제거
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;