MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  サブクエリー、導出テーブル、ビュー参照および共通テーブル式の最適化

8.2.2 サブクエリー、導出テーブル、ビュー参照および共通テーブル式の最適化

MySQL クエリーオプティマイザには、サブクエリーの評価に使用できる様々な戦略があります:

  • IN= ANY または EXISTS 述語で使用されるサブクエリーの場合、オプティマイザには次の選択肢があります:

    • 準結合

    • 実体化

    • EXISTS 戦略

  • NOT IN<> ALL または NOT EXISTS 述語で使用されるサブクエリーの場合、オプティマイザには次の選択肢があります:

    • 実体化

    • EXISTS 戦略

導出テーブルの場合、オプティマイザには次の選択肢があります (ビュー参照および共通テーブル式にも適用されます):

  • 導出テーブルの外部クエリーブロックへのマージ

  • 導出テーブルを内部一時テーブルに実体化

次の説明では、前述の最適化戦略について詳しく説明します。

注記

サブクエリーを使用して単一のテーブルを変更する UPDATE ステートメントおよび DELETE ステートメントの制限は、オプティマイザが準結合サブクエリーまたは実体化サブクエリーの最適化を使用しないことです。 回避策として、サブクエリーではなく結合を使用する複数テーブルの UPDATE ステートメントおよび DELETE ステートメントとしてリライトしてみてください。


関連キーワード:  テーブル, インデックス, サブクエリー, InnoDB, ステートメント, 結合, 導出, EXISTS, クエリー, 戦略