GAGA LIFE.

DBAブログ

Oracle 問合せ変換(Query Transformation)

はじめに

オプティマイザは、多数の問合せ変換を使用して、意味的には同等の新しいSQL文を生成します。
数あるOracleの問合せ変換について主要なものを整理しました。

  • 以下でカテゴリ分けしています。
    • 単純変換:No-brainer Transformations
    • 集合と結合の変換:Set and Join Transformations
    • 集約に関する変換:Aggregation Transformations
    • サブクエリ変換:Subquery Transformations
    • その他の変換:Miscellaneous Transformations
    • スター型変換:Star Transformation

問合せ変換

名称 和名 ヒント句
No-brainer Transformations
Count Transformation カウント変換
Predicate Move-around 述語移動
Set and Join Transformations
Join Elimination 結合排除 eliminate_join/no_eliminate_join
Outer Join to Inner Join 外部結合の内部結合変換 outer_join_to_inner/no_outer_join_to_inner
Full Outer Join to Outer Join 外部結合の完全外部結合変換 full_outer_join_to_outer/no_full_outer_join_to_outer
Semi-Join to Inner Join セミ結合の内部結合変換 semi_to_inner/no_semi_to_inner
Subquery Unnesting サブクエリのネスト解除 unnest/no_unnest
Partial Joins 部分結合 partial_join/no_partial_join
Join Factorization 結合の因数分解 factorize_join/no_factorize_join
Set to Join セット操作の結合 set_to_join/no_set_to_join
Aggregation Transformations
Distinct Aggregation 個別集計 transform_distinct_agg/no_transform_distinct_agg
Distinct Placement Distinct配置の最適化 place_distinct/no_place_distinct
Group by Placement Group by配置の最適化 place_group_by/no_place_group_by
Group by Pushdown Group byのプッシュ parallel gby_pushdown/no_parallel gby_pushdown
Subquery Transformations
Simple View Merging ビューマージ merge/no_merge
Complex View Merging 複雑なビューマージ merge/no_merge
Factored Subquery Materialization 因数分解されたサブクエリの実体化 inline/materialize
Subquery Pushdown サブクエリのプッシュ push_subq/no_push_subq
Join Predicate Pushdown 結合述語のプッシュ push_pred/no_push_pred
Subquery Decorrelation サブクエリ相関解除 decorrelate/no_decorrelate
Subquery Coalescing サブクエリの結合 coalsesce_sq/no_coalsesce_sq
Miscellaneous Transformations
Or Expansion OR拡張 use_concat/no_expand
Materialized View Rewrite クエリーリライト rewrite/no_rewrite
Grouping Sets to Union Expansion UNION拡張のグループ化 expand_gset_to_union/no_expand_gset_to_union
Order by Elimination ORDER BYの排除 eliminate_oby/no_eliminate_oby
Table Expansion 表拡張 expand_table/no_expand_table
Star Transformation
The Distributed Join Filter Problem 分散結合フィルタ no_table_lookup_by_nl

※和名は、勝手に命名しているものもあります。

参考資料

Expert Oracle SQL
Oracle® Database SQLチューニング・ガイド 12cリリース2 (12.2)