본문으로 건너뛰기
SQLD 준비실
이론 전체 목차 열기 31 / 32

SQL 고급활용 및 튜닝 · 실전 문제 31 / 32

SQL 전문가 실전 문제 풀이 전략

이론을 실제 문제에 적용할 때 실행 계획, 인덱스, 조인, 트랜잭션 문제를 어떤 순서로 읽어야 하는지 정리합니다.

출제 빈도 ★★☆☆☆ 관련 문제 0개 | 실전문제분석 순서

실전 문제는 순서가 중요하다

고급 SQL 문제는 지식을 많이 아는 것보다 문제를 읽는 순서가 중요합니다. SQL, 실행 계획, 인덱스 구성, 데이터 분포, 트랜잭션 상황이 함께 제시되면 먼저 무엇을 봐야 할지 정해야 합니다.

SQL 성능 문제 읽기

  1. SQL이 원하는 결과를 먼저 이해합니다.
  2. WHERE 조건으로 얼마나 줄어드는지 봅니다.
  3. 조인 대상과 조인 조건을 확인합니다.
  4. 실행 계획에서 접근 방식과 조인 방식을 봅니다.
  5. 예상 행 수와 실제 행 수 차이를 찾습니다.
  6. 인덱스 추가보다 SQL 수정으로 해결 가능한지 먼저 봅니다.

인덱스 문제 읽기

인덱스 문제가 나오면 다음 순서로 판단합니다.

확인 항목질문
조건 컬럼자주 쓰이고 선택도가 높은가
결합 순서선두 컬럼부터 조건에 사용되는가
연산 형태함수, 형 변환, 부정 조건으로 막히지 않는가
정렬ORDER BY와 인덱스 순서가 맞는가
비용쓰기 성능 저하를 감수할 가치가 있는가

조인 문제 읽기

조인 문제에서는 “작은 결과를 먼저 만드는가”를 봅니다. 작은 테이블이 아니라 조건 적용 후 작은 결과가 기준입니다.

  • 소량 결과와 인덱스가 있으면 NL 조인을 떠올립니다.
  • 대용량 등가 조인이면 Hash 조인을 떠올립니다.
  • 정렬된 대용량 또는 범위 조인이면 Sort Merge 조인을 검토합니다.

트랜잭션 문제 읽기

잠금과 동시성 문제는 누가 어떤 자원을 잡고 있고, 누가 무엇을 기다리는지 그려야 합니다.

T1: A 수정 → B 수정 대기
T2: B 수정 → A 수정 대기

이 구조는 데드락입니다. 한쪽만 기다리고 있다면 블로킹입니다.

오답을 줄이는 습관

  • “항상”과 “무조건”이라는 표현을 조심합니다.
  • 인덱스 사용이 항상 빠르다는 선택지는 의심합니다.
  • 힌트는 해결책일 수 있지만 영구 정답은 아닐 수 있습니다.
  • DELETE, TRUNCATE, DROP의 분류와 복구 가능성을 구분합니다.
  • OUTER JOIN 뒤 WHERE 조건이 결과를 줄이는지 확인합니다.

한 문장 요약

실전 문제는 SQL 결과, 접근 경로, 조인 방식, 동시성 상황을 순서대로 분해하면 복잡도가 낮아집니다.