인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

JPA (ORM) 개발자를 위한 고성능 SQL (High-Performance SQL)

관계형 데이터베이스 시스템을 최대한 활용하세요!

Thumbnail

중급자를 위해 준비한
[SQL, performance-tuning] 강의입니다.

이런 걸 배울 수 있어요

  • Hibernate 및 JPA 분야의 세계적인 전문가가 알려주는 SQL 성능 튜닝과 최적화 노하우를 배웁니다.

  • 백엔드 애플리케이션과 데이터베이스 간의 효율적인 상호작용을 고려한 SQL 작성법을 익힙니다.

  • JOIN, 서브쿼리, CTE, 윈도우 함수 등 다양한 SQL 전략 중 어떤 것이 ORM 환경에서 성능을 극대화할 수 있는지 판단하는 기준을 제시합니다.

  • Oracle, SQL Server, MySQL, PostgreSQL 등 대표적인 RDBMS에서의 성능 개선 쿼리 전략을 비교하고, 각 데이터베이스에서 잘 작동하거나 작동하지 않는 상황을 명확히 알려줍니다.

  • Upsert, Merge와 같은 고급 쿼리 기법을 다양한 RDBMS 환경에서 어떻게 활용하는지 실무 사례 중심으로 배울 수 있습니다.

  • 트랜잭션 격리 수준 이슈, 락킹 전략, JSON 데이터 처리, 고급 인덱싱 전략 등 최신 SQL 주제를 다뤄 애플리케이션 성능을 극대화할 수 있는 역량을 키웁니다.

Vlad님-띠배너(수정)

글로벌 전문가에게 배우는
고성능 SQL 튜닝 전략

지금 작성하고 있는 SQL, 정말 최적화되어 있나요?

DB 성능은 코드 최적화가 아닌 ‘쿼리 설계’에서 판가름납니다.

"쿼리의 본질을 이해하는 순간, 데이터베이스가 달라집니다."

많은 개발자들이 SQL을 작성하며 로직 구현에는 익숙하지만, 실제 데이터베이스 성능을 좌우하는 건 어떻게 쿼리를 작성했느냐입니다.

조인의 순서, 서브쿼리의 위치, 인덱스가 어떻게 활용되는지에 따라 동일한 결과를 반환하는 쿼리도 수십 배의 성능 차이를 만들어냅니다.
하지만 실행 계획(Execution Plan)을 읽지 않고, ORM이 생성한 SQL을 그대로 쓰거나 익숙한 패턴만 반복하는 경우, 병목의 실체는 늘 ‘깊숙이 숨겨진 채’ 운영에 부담을 줍니다.

모든 애플리케이션 개발자가 DBA 수준의 깊은 SQL 이해도를 갖출 필요는 없지만, 애플리케이션을 개발할 때 결코 놓쳐선 안 될 핵심적인 SQL 성능 기법들이 존재합니다.

많은 개발자들이 ORM만 잘 알거나, 반대로 SQL만 잘 아는 경우가 많은데, 이 두 가지를 유기적으로 결합하여 이해하고 활용하는 경우는 많지 않습니다.
이 강의는 ORM과 SQL을 분리된 기술이 아닌 서로 시너지를 낼 수 있는 도구로서 바라보게 합니다.

SQL은 단순한 데이터 조회 언어가 아니라, 데이터베이스와 성능에 대한 의사결정의 도구입니다.
쿼리의 본질을 이해하고 나면, 성능 개선은 더 이상 감이 아닌, 설계의 영역이 됩니다.

성능 중심으로 설계하는
SQL 사고법

"고성능 SQL" 강의를 수강하면

기능 나열이 아닌, 전략적 구조를 설계하는 실전 SQL

JOIN, 서브쿼리, CTE, 윈도우 함수는 그 자체보다 어떻게 조합하고, 언제 선택하느냐가 실전의 핵심입니다. 이 강의는 단순히 기능을 나열하지 않습니다. 데이터 구조와 요구사항에 따라 다양한 전략을 비교하고, 그중 최적의 쿼리 구조를 설계하는 실무형 사고 흐름을 훈련합니다.

쿼리 성능을 ‘직접 체득하는’ 학습 방식

단순히 문법을 익히는 게 아니라, 실제 쿼리를 실행하고 응답 속도를 비교해보며 병목이 발생하는 지점, 개선되는 구조를 라인 단위로 짚어가며 체감할 수 있도록 설계한 강의입니다. PostgreSQL, MySQL, Oracle 등 다양한 환경에서도 통하는 SQL 설계 원리 중심으로 설명되어, 특정 툴에 의존하지 않고도 성능 튜닝의 핵심 개념을 몸에 익힐 수 있습니다.

트랜잭션부터 JSON까지, 고급 SQL로 실무 레벨업

윈도우 함수, 트랜잭션 격리 수준, 낙관적/비관적 락킹, JSON 처리까지—실무에서 자주 접하지만 제대로 익히기 어려운 고급 주제를 체계적으로 다룹니다. 이 강의를 통해 단순 쿼리 작성 능력을 넘어,
성능·동시성·데이터 설계까지 아우르는 실전형 SQL 실력을 갖추게 됩니다.

학습 내용

다양한 JOIN 방식과 성능 최적화 전략

INNER, OUTER, NATURAL, LATERAL JOIN 등 SQL의 다양한 조인 방식을 비교하고, 상황에 따른 선택 기준과 성능 차이를 분석합니다. 실행 계획을 중심으로 쿼리 최적화 흐름을 학습하며, 실제로 성능 병목이 발생하는 지점을 식별하는 능력을 기릅니다.

서브쿼리와 파생 테이블을 활용한 쿼리 구조화

JOIN과 서브쿼리의 장단점을 비교하고, EXISTS, IN, ANY/ALL 등 다양한 서브쿼리 표현식의 내부 작동 원리를 이해합니다. Derived Table, 공통 테이블 표현식(CTE)을 활용해 복잡한 쿼리를 구조적으로 재구성하고, 가독성과 성능을 동시에 확보하는 방법을 실습합니다.

재귀 쿼리와 계층형 데이터 처리 방식

Recursive CTE를 활용해 트리 구조나 조직도처럼 계층적인 데이터를 효과적으로 처리하는 방법을 학습합니다. 재귀 쿼리의 실행 방식과 성능 측면 고려사항을 함께 다루며, 실제 비즈니스 로직 구현에 필요한 SQL 기술을 익힙니다.

윈도우 함수로 복잡한 분석 쿼리 구성하기

ROW_NUMBER, RANK, DENSE_RANK, LAG/LEAD 등 윈도우 함수를 활용해 집계, 정렬, 순위 구하기 등 복잡한 분석 로직을 SQL로 구현합니다. 윈도우 프레임과 PARTITION BY의 내부 동작을 이해하고, 성능 저하 없이 데이터를 집계하는 고급 기법을 실습합니다.

실무에서 자주 쓰는 SQL 활용 기법

Upsert와 Merge 구문을 활용해 삽입과 갱신을 동시에 처리하는 방법을 익히고, Pivot/Unpivot을 통해 데이터의 형태를 유연하게 변형하는 기법을 학습합니다. 또한 SQL 실행 순서를 정확히 이해하고, 다양한 페이지네이션 방식의 동작 원리를 익히며 쿼리 흐름에 대한 이해도를 높입니다.

트랜잭션과 JSON 처리까지 아우르는 고급 SQL

ACID 특성과 트랜잭션 격리 수준을 바탕으로 한 동시성 제어 기법을 익히고, 비관적/낙관적 Locking 전략을 비교합니다. JSON 데이터 타입을 SQL에서 처리하는 방법도 함께 다루며, 현대적인 데이터 모델에 대응할 수 있는 확장된 SQL 역량을 갖춥니다.

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • ORM은 사용하지만 성능 개선에 대한 갈망이 있으신 분

  • SQL 튜닝은 DBA 분들이 담당해서 SQL 성능 개선 경험에 갈망이 있으신 분

  • SQL은 쓰지만 성능 개선 방법이나 전략 선택 기준이 부족하다고 느끼는 분

  • 실무에서 마주치는 복잡한 쿼리 문제를 해결하는 감각을 키우고 싶은 분

  • JOIN, CTE, 트랜잭션, JSON 등 고급 SQL 주제까지 체계적으로 배우고 싶은 개발자

선수 지식,
필요할까요?

  • JAVA, Spring Framework 의 기본 사용법

  • 기본적인 SQL 작성 능력

  • 관계형 데이터베이스 사용 경험

안녕하세요
Vlad Mihalcea입니다.

987

수강생

30

수강평

4.4

강의 평점

2

강의

My name is Vlad Mihalcea, and I’m a Java Champion. I wrote the High-Performance Java Persistence book, which became one of the best-selling Java books on Amazon.

 

I'm currently developing the amazing Hypersistence Optimizer, and in my free time, I develop various open-source projects (e.g., Hypersistence Utils and FlexyPool) and answer questions on StackOverflow.

 

저는 Java 챔피언이자 Hibernate ORM 프로젝트의 주요 기여자입니다. Hypersistence Optimizer 도구를 만들었으며, 이 도구는 애플리케이션 구성과 매핑을 스캔하여 데이터 액세스 계층 속도를 향상시키는 데에 필요한 변경 사항을 알려주는 도구입니다.

StackOverflow에서 Hibernate, Java, JPA 태그에 관련된 수천 개의 질문에 답변하며 골드 배지를 획득했습니다.

흥미로운 것을 발견하면 개인 블로그에 공유하는 것을 좋아합니다. 그는 오픈 소스 소프트웨어를 신뢰하며, 모든 개발자가 어떤 방식으로든 참여해야 한다고 생각합니다.

적절한 도구를 찾지 못하면 Hypersistence UtilsFlexyPool과 같은 새로운 오픈 소스 프로젝트를 시작하기도 합니다.

더보기

커리큘럼

전체

79개 ∙ (7시간 37분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!