L
o
a
d
i
n
g
.
.
.

ホーム

お知らせ

製品・ソリューション

サービス

導入事例・パートナー

EXEM Academy・ブログ

会社情報

採用情報

2018.01.10

UNNEST SUBQUERY

目次



基本情報


Parameter情報

1) Syntax : _UNNEST_SUBQUERY

2) 設定方法
   Parameter File
   ALTER SYSTEM SET"_UNNEST_SUBQUERY"= TRUE| FALSE

   ALTER SESSION SET"_UNNEST_SUBQUERY"= TRUE| FALSE


3) バージョンとデフォルト
   9iR2  : TRUE
   10gR1 : TRUE
   10gR2 : TRUE
   11g   : TRUE


Appendix of Redo Layer

_UNNEST_SUBQUERYパラメータは、Subquery Unnestingかどうかを決定します。Subquery Unnestingとは、文字通りSubqueryをUnnest、すなわちクエリを解放することを意味します。


注意


Subquery Unnestingの適用例

Subquery Unnestingの適用例は、以下の通りです。

- Subqueryを使用するクエリ
SELECT*
 FROM orders
 WHERE customer_id IN
   (SELECT customer_id FROM customers);
 
- Subquery Unnestingによって変換されたクエリ。Subqueryがクエリ本文解放されたことを知ることができます。
 SELECT orders*
 FROM orders、customers
 WHERE orders.customer_id= customers.customer_id;


誤ったSubquery Unnestingによるパフォーマンスの低下

Subquery Unnestingは非常に望ましい機能であり、一般的に性能を改善させる効果があります。しかし、特定のクエリでは、特に複雑なクエリでは、むしろ誤った実行計画を作成し、逆効果になる場合があります。この場合には、Subquery Unnestingを無効にすることで、問題を解決することがで、次のような方法で無効にすることができます。

- _UNNEST_SUBQUERYパラメータをFalseに変更
ALTER SESSION SET"_UNNEST_SUBQUERY"= FALSE;
SELECT* FROM(SELECT... FROM b)x WHERE a= '100';

- NO_UNNESTヒントを使用
SELECT* FROM(SELECT/*+ NO_UNNEST*/ FROM b)x WHERE a= '100';


関連情報

1. NO_UNNESTヒント
2. _COMPLEX_VIEW_MERGINGパラメータ
3. _OPTIMIZER_COST_BASED_TRANSFORMATIONパラメータ
4. _PUSH_JOIN_PREDICATEパラメータ


外部参照

1. http://www.psoug.org/reference/hints.html


PHP Code Snippets Powered By : XYZScripts.com