統計を改善します。 推定行数は1ですが、実際の行数は700万を超えています。これにより、実行プランはハッシュ結合の代わりにネストされたループを使用します。ネストされたループは少量のデータに対してより適切に機能し、ハッシュ結合は大量のデータに対してより適切に機能します。関連するテーブルに正確な最新の統計があることを確認するのと同じくらい簡単かもしれない修正。これは通常、デフォルト設定で統計を収集することで実行できます。例:exec dbms_stats.gather_table_stats('SIRS_UATC1', 'TBL_RECON_PM');
。
それでもカーディナリティの推定が改善されない場合は、/*+ dynamic_sampling(5) */
などの動的サンプリングヒントを使用してみてください。 。このような長時間実行されるクエリの場合、より良い計画につながるのであれば、事前にデータをサンプリングするために少し余分な時間を費やす価値があります。
オブジェクトレベルの並列処理ではなく、ステートメントレベルの並列処理を使用します。 これは、並列SQLでおそらく最も一般的な間違いです。オブジェクトレベルの並列処理を使用する場合、ヒントはエイリアスを参照する必要があります オブジェクトの。 11gR2以降、オブジェクトの指定について心配する必要はありません。このステートメントに必要なヒントは1つだけです。INSERT /*+ PARALLEL(16) APPEND */ ...
。 NOLOGGING
に注意してください 本当のヒントではありません。