본문으로 건너뛰기
실습하기

성능 최적화 팁

데이터베이스가 커질수록 효율적인 SQL은 더욱 중요합니다.

이 강의에서는 인덱스, 실행 계획, 그리고 설계 전략을 통해 쿼리를 최적화하는 방법을 배웁니다.


1. 인덱스 사용하기

인덱스(index)는 데이터베이스의 목차와 같습니다.

특히 큰 테이블에서 원하는 행을 더 빠르게 찾을 수 있도록 도와줍니다.

인덱스 생성
CREATE INDEX idx_student_name ON students(name);

인덱스를 사용할 때:

다음과 같은 경우 인덱스를 고려하세요.

  • WHERE, JOIN, ORDER BY에 사용되는 컬럼
  • 행이 많고 조회가 빈번한 테이블

인덱스를 과도하게 만들지 마세요. 인덱스는 읽기 성능을 높이는 대신 쓰기 성능을 낮출 수 있습니다.


2. SELECT * 지양하기

필요한 컬럼만 조회하면 I/O와 메모리 사용량을 줄일 수 있습니다.

SELECT * vs SELECT name, grade
-- 권장하지 않음
SELECT * FROM students;

-- 더 나은 방법
SELECT name, grade FROM students;

3. EXPLAIN 또는 EXPLAIN QUERY PLAN 사용하기

EXPLAIN을 사용하면 쿼리가 내부적으로 어떻게 실행되는지 이해할 수 있습니다.

EXPLAIN 사용하기
EXPLAIN QUERY PLAN
SELECT name FROM students WHERE grade > 90;

이를 통해 다음을 확인할 수 있습니다.

  • 전체 테이블 스캔(느림)
  • 인덱스 사용 여부(빠름)
  • 비효율적인 Join이나 정렬

4. 먼저 필터링, 나중에 Join

항상 Join하기 전에 행 수를 줄이세요. 이렇게 하면 속도가 개선됩니다.

선 필터링 예시
-- 더 나은 접근
SELECT *
FROM (SELECT * FROM orders WHERE status = 'paid') AS o
JOIN customers c ON o.customer_id = c.id;

5. 개발 중에는 LIMIT 사용하기

쿼리를 테스트할 때 비용이 큰 실수를 피하려면:

100행 제한
SELECT * FROM logs LIMIT 100;

요약

전략이점
인덱스더 빠른 검색과 Join
SELECT * 지양스캔하는 데이터 감소
EXPLAIN 사용성능 문제 파악
Join 전 필터링더 작고 빠른 Join
개발 시 LIMIT장시간 실행 쿼리 예방

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!