sql >> データベース >  >> RDS >> Oracle

Oracle 11g-低速の並列挿入選択を最適化する方法は?

    統計を改善します。 推定行数は1ですが、実際の行数は700万を超えています。これにより、実行プランはハッシュ結合の代わりにネストされたループを使用します。ネストされたループは少量のデータに対してより適切に機能し、ハッシュ結合は大量のデータに対してより適切に機能します。関連するテーブルに正確な最新の統計があることを確認するのと同じくらい簡単かもしれない修正。これは通常、デフォルト設定で統計を収集することで実行できます。例:exec dbms_stats.gather_table_stats('SIRS_UATC1', 'TBL_RECON_PM');

    それでもカーディナリティの推定が改善されない場合は、/*+ dynamic_sampling(5) */などの動的サンプリングヒントを使用してみてください。 。このような長時間実行されるクエリの場合、より良い計画につながるのであれば、事前にデータをサンプリングするために少し余分な時間を費やす価値があります。

    オブジェクトレベルの並列処理ではなく、ステートメントレベルの並列処理を使用します。 これは、並列SQLでおそらく最も一般的な間違いです。オブジェクトレベルの並列処理を使用する場合、ヒントはエイリアスを参照する必要があります オブジェクトの。 11gR2以降、オブジェクトの指定について心配する必要はありません。このステートメントに必要なヒントは1つだけです。INSERT /*+ PARALLEL(16) APPEND */ ...NOLOGGINGに注意してください 本当のヒントではありません。



    1. 2つの日付の間の日付のリストを取得します

    2. Oracleセッションの言語を変更する方法

    3. MariaDB DEFAULT()の説明

    4. Android SQLiteエラー:変数番号は?1から?999の間でなければなりません