高速に動作したのでそれについて調べたことをまとめます。Aurora)どんなテーブルか今回発生したケースに似たテーブル構成で再現してみます。※学校の先生から見るとデータとして足りないものがあると思いますが許してください。学生テーブル生徒IDがprimary学年、所属クラスがindex成績テーブル生徒IDが外部キーインデックス定期試験が行われるごとにデータがどんどん増えていく1対Nのテーブル構成で、成績は生徒IDで引っ張る形なので他のindexがない、という感じです。こんな要望でるよね卒業生で数学に100点つけたのって何人いたっけこのクエリ実装としては以下の2パターンになると思います。小さければ2の方が優位という感じと私は認識しています。今回実は定期試験が非常に多いパターンでした。対比が1:100くらいになっていたので、明らかに1の実装で行うべきという所感でした。1サブクエリ内で先に成績テーブルをフルスキャンする状態になっていました。サブクエリだけをexplainした結果が以下の画像です。となり完全にフルスキャンでした。最終的に成績テーブルは7件しかチェックしていないという結果になりました。いうことで何が起こっているのか調べました。JOIN(順結合変換)というのが行われていました。確認方法は下記の通りです。EXTENDEDEXPLAINと使い方は同じ、EXTENDEDをつけるだけで通常より詳細な情報を取得できます。EXPLAINによって生成された追加の情報を表示できます。WARNINGSを実行した結果がこちら。準結合されて絞り込みの演算が簡略化されています。準結合変換の条件は細かく設定されており、公式のドキュメントでは下記の通りです。サブクエリーである必要があります。句または集約関数が含まれていてはなりません。外部テーブルとおよび内部テーブルの合計数が結合で許可されている最大テーブル数より少なくなければなりません。準結合変換が行われる可能性があるということですね。まとめクエリが遅そうに見えてもオプティマイザが良い感じに高速化してくれるあら便利な時代になりました。実際にどう実行されるかはやはりオプティマイザ次第なので、まずはEXPLAINを(EXTENDEDオプションも忘れずに)かけて確認すると良さそうです。適当なクエリでも高速化してくれるから良いじゃん(いいじゃん)とあぐらをかかずに、そのままでも高速に動作するクエリを実行するように心がけるといいかなと思いました。丈樹アイレット第一事業部のWebアプリ開発者。PHP、JavaScriptの案件がメイン。モノづくりは常に楽しみながらがモットー。面白いものを生み出して、管理までできるようになるのが目標。S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。cloudpack.。