강의

멘토링

로드맵

Inflearn brand logo image
BEST
Programming

/

Back-end

JPA (ORM) 開発者向け 高性能SQL (High-Performance SQL)

リレーショナルデータベースシステムを最大限に活用しましょう!

  • Vlad Mihalcea
SQL
performance-tuning
sql-query
DBMS/RDBMS

学習した受講者のレビュー

こんなことが学べます

  • HibernateおよびJPA分野の世界的な専門家が教える、SQLパフォーマンスチューニングと最適化のノウハウを学びます。

  • バックエンドアプリケーションとデータベース間の効率的な相互作用を考慮したSQLの作成方法を習得します。

  • ORM環境でパフォーマンスを最大化するために、JOIN、サブクエリ、CTE、ウィンドウ関数など、さまざまなSQL戦略のうちどれを選択すべきかを判断する基準を提示します。

  • Oracle、SQL Server、MySQL、PostgreSQLなど代表的なRDBMSにおける性能改善クエリ戦略を比較し、各データベースでうまく機能する、または機能しない状況を明確に示します。

  • Upsert、Mergeのような高度なクエリ技法を、多様なRDBMS環境でどのように活用するか、実務事例を中心に学ぶことができます。

  • トランザクション分離レベルの問題、ロッキング戦略、JSONデータ処理、高度なインデックス戦略など、最新のSQLトピックを取り上げ、アプリケーションのパフォーマンスを最大限に高めることができる能力を養います。

Vladさん - バンドバナー(修正)

グローバル専門家に学ぶ
高性能SQLチューニング戦略

今書いているSQL、本当に最適化されていますか?

DBのパフォーマンスは、コードの最適化ではなく、「クエリ設計」で判明します。

クエリの本質を理解する瞬間、データベースが異なります。」

多くの開発者がSQLを作成し、ロジックの実装に慣れていますが、実際のデータベースのパフォーマンスに影響を与えるのはどのようにクエリを書いたのでしょうか。

結合の順序、サブクエリの位置、インデックスがどのように利用されるかに応じて、同じ結果を返すクエリも数十倍のパフォーマンスの違いを生み出します。
ただし、実行計画を読み取らずにORMが生成したSQLをそのまま書き込んだり、使い慣れたパターンだけを繰り返す場合、ボトルネックの実体は常に「深く隠されたまま」運営に負担をかけます。

すべてのアプリケーション開発者がDBAレベルの深いSQL理解を必要とするわけではありませんが、アプリケーションを開発するときに決して見逃すべきではない重要なSQLパフォーマンス技術があります。

多くの開発者がORMだけをよく知ったり、逆にSQLだけをよく知っていることが多いのですが、これら2つを有機的に組み合わせて理解して活用することは多くありません。
このレッスンでは、ORMとSQLを別々の技術ではなく互いに相乗効果を与えるためのツールとして見ていきます。

SQLは単純なデータ検索言語ではなく、データベースとパフォーマンスの意思決定のツールです。
クエリの本質を理解した後、パフォーマンスの向上はもはや感ではなく、設計の領域になります。

性能中心に設計する
SQLの考え方

「高性能SQL」講義を受講すると

機能のリストではなく、戦略的構造を設計する実用SQL

JOIN、サブクエリ、CTE、およびウィンドウ関数はそれ自体よりどのように組み合わせ、いつ選択するかが実践の核心です

クエリのパフォーマンスを「直接取得する」学習方法

単に文法を習得するのではなく、実際のクエリを実行し、応答速度を比較してみてボトルネックが発生する点、改善される構造をライン単位で探して体感できるように設計した講義です

トランザクションからJSONまで、高度なSQLで実務レベルアップ

ウィンドウ関数、トランザクション分離レベル、楽観的/悲観的ロック、JSON処理まで - 実践から頻繁に遭遇しますが、正しく習得するのが難しい高度なトピックを体系的にカバーしています。
性能・同時性・データ設計まで合わせる実戦型SQL実力を備えるようになります。

学習内容

さまざまなJOIN方式とパフォーマンス最適化戦略

INNER、OUTER、NATURAL、LATERAL JOINなど、SQLのさまざまな結合方法を比較し、状況に応じた選択基準とパフォーマンスの違いを分析します。

サブクエリと派生テーブルを利用したクエリ構造化

JOINとサブクエリの長所と短所を比較し、EXISTS、IN、ANY/ALLなど、さまざまなサブクエリ式の内部動作原理を理解します。

再帰クエリと階層型データ処理方式

Recursive CTEを活用して、ツリー構造や組織図など、階層的なデータを効果的に処理する方法を学びます。再帰クエリの実行方法とパフォーマンスに関する考慮事項をまとめ、実際のビジネスロジックを実装するために必要なSQL技術を習得します。

ウィンドウ関数で複雑な分析クエリを構成する

ROW_NUMBER、RANK、DENSE_RANK、LAG/LEADなどのウィンドウ関数を活用して、集計、ソート、ランクの取得など、複雑な分析ロジックをSQLで実装します。 WindowsフレームとPARTITION BYの内部動作を理解し、パフォーマンスを低下させることなくデータを集計する高度な技術を実践します。

実務でよく使われるSQL活用技法

UpsertとMergeの構文を活用して挿入と更新を同時に処理する方法を習得し、Pivo​​t/Unpivotを介してデータの形を柔軟に変形する手法を学習します。また、SQLの実行順序を正確に理解し、さまざまなページネーション方式の動作原理を習得し、クエリフローの理解度を高めます。

トランザクションとJSON処理までの高度なSQL

ACID特性とトランザクション分離レベルに基づいた並行性制御技術を習得し、悲観的/楽観的ロック戦略を比較します。 JSONデータ型をSQLで処理する方法も一緒に扱い、現代的なデータモデルに対応できる拡張されたSQL能力を備えています。

こんな方に
おすすめです

学習対象は
誰でしょう?

  • ORMは使うけど、性能改善への欲求がある方

  • SQLチューニングはDBAの方が担当しており、SQLのパフォーマンス改善経験を切望している方

  • SQLは書けるものの、性能改善の方法や戦略の選択基準が不足していると感じる方

  • 実務で直面する複雑なクエリの問題を解決するセンスを磨きたい方

  • JOIN、CTE、トランザクション、JSONなど、高度なSQLのトピックまで体系的に学びたい開発者

前提知識、
必要でしょうか?

  • JAVA、Spring Framework の基本的な使い方

  • 基本的なSQL作成能力

  • リレーショナルデータベースの使用経験

こんにちは
です。

1,163

受講生

62

受講レビュー

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分)

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

23件

4.8

23件の受講レビュー

  • 모깅님의 프로필 이미지
    모깅

    受講レビュー 25

    平均評価 5.0

    5

    34% 受講後に作成

    아주 자세하게 설명해주셔서 탑 개발자는 어떤식으로 생각하고 개발하는지 배울 수 있었습니다. 남은 강의도 꼭꼭 씹어먹겠습니다!

    • Vlad Mihalcea
      知識共有者

      Thank you for your review. I'm happy you found the course useful.

  • hahahl님의 프로필 이미지
    hahahl

    受講レビュー 46

    平均評価 5.0

    5

    9% 受講後に作成

    사고의 흐름을 배울 수 있는 방법이 도움이 많이 됩니다. 영어로 듣고 복습은 시간을 절약하기 위해 2배속 한국어로 듣는데 전혀 어색함이 없네요

    • Vlad Mihalcea
      知識共有者

      I'm glad you liked it. My course was recorded in English, but the Inflearn platform managed to provide the dubbing and subtitiles in Korean.

  • 화를참자님의 프로필 이미지
    화를참자

    受講レビュー 6

    平均評価 5.0

    5

    8% 受講後に作成

    블라드님 강의가 있다는 건도 알고 있었지만, 영어가 안돼서 망설이다 말았었습니다. 블라드님이 언제 한국어를 배운건지 모르겠지만, 한국어로 지식을 공유해주셔서 감사합니다... 강의 슬라이드 너무 좋네요. 블라드님이 전달하고싶은 부분을 바로바로 파악할 수 있었습니다. 나머지도 잘 학습해보겠습니다

    • Vlad Mihalcea
      知識共有者

      Thank you for appreciating my course. I'm glad you enjoyed it.

  • asdf님의 프로필 이미지
    asdf

    受講レビュー 10

    平均評価 5.0

    5

    37% 受講後に作成

    다양한 상황에서 어떤 전략을 적용하는 것이 좋은지 잘 설명해 주십니다. SQL 역량을 키우는 데 도움이 많이 될 것 같습니다.

  • 알고리즘가즈앙님의 프로필 이미지
    알고리즘가즈앙

    受講レビュー 2

    平均評価 5.0

    5

    6% 受講後に作成

    진짜 블로그로만 보다가 이번에 강의나왓다해서 바로 신청햇어여!! 좋은강의 너무 감사하고 한국어로 설명해주셔서 부담감없이 듣고잇어요~~~

    • Vlad Mihalcea
      知識共有者

      Thank you for such a quick enrolment and enjoy the video lessons.

¥26,774

Vlad Mihalceaの他の講座

知識共有者の他の講座を見てみましょう!

似ている講座

同じ分野の他の講座を見てみましょう!