2017.08.16
Dynamic sampling
目次
基本情報
ヒント
DYNAMIC_SAMPLING を利用してください。
Syntax
/*+ dynamic_sampling(query_block_name level) */
サポート
「9i」からサポートされます。
詳細
ステートメントレベルでDynamic Samplingを実行するように指定します。次のような場合には、dynamic_samplingのヒントを使用します。
- Global Temporary Tableなどの統計情報を収集することが困難なオブジェクトに対して一時的な統計情報を生成しようとする場合
- 統計情報は、定期的に収集できたが、統計情報の解釈に誤りがある場合に、一時的に統計情報を生成したい場合
(Like条件を使用して、複雑なPredicateやTable Pseudo Functionを使用している場合などがこれに該当します。)
Dynamic Samplingは、統計情報がないか、統計情報だけでは解釈できない複雑な条件(Predicate)を解釈するのに大きな助けになります。しかし、Dynamic Samplingが常に正確な結果を出すことはありません。たとえば、次のような場合には、Dynamic Samplingが全く役に立たないことがあります。
- Query TransformationによってPredicateが変わる場合:例えば、Or Expansionによって一つのQueryが、2つQueryに分岐されている場合には、元のQueryのDynamic Sampling結果が分岐されたQueryには意味がないので、Dynamic Samplingの効果がなくなります。
- Join Predicate:Join PredicateによるCardinality計算はDynamic Samplingには実行されません。