はじめに
オプティマイザは、多数の問合せ変換を使用して、意味的には同等の新しい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
Expert Oracle SQL: Optimization, Deployment, and Statistics
- 作者: Tony Hasler
- 出版社/メーカー: Apress
- 発売日: 2014/06/24
- メディア: ペーパーバック
- この商品を含むブログを見る
Oracle® Database SQLチューニング・ガイド 12cリリース2 (12.2)