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

oracle-クエリは同じですが、11gと12cではプランが異なります

    選択したオプティマイザによって選択される実行プランは、11gと12cだけでなく、同じバージョンの2つの環境間でも大きく異なる可能性があります。それは多くの要因に依存しますが、ほとんどは:

    • テーブルの行数(環境間で類似していますか?)
    • どのインデックスが存在しますか(両方のデータベースにまったく同じインデックスがありますか?)
    • テーブルとインデックスの統計はありますか?また、それらはどの程度最新ですか?最新でない場合は、テーブルの統計情報を収集してください インデックス。

    これらの詳細を投稿できれば、より役立つ回答を提供できます。

    また、コードは自動生成されたように見えます。自由にコードを変更できる場合は、詳細に基づいて、書き直されたクエリやヒントを提案できます。

    コードを変更できない場合は、SQLプラン管理(SPM)を使用してプランを強制することができます。つまり、実行速度が速いデータベースからエクスポートして、他のデータベースにインポートします。

    更新

    この簡略化されたバージョンのSQLを使用して、計画を生成します。

    SELECT * FROM DMProgDate_00001
     WHERE ProgressOID IN ( 
       SELECT OID FROM DMProgress_00001 
        WHERE Project = 'Moho'
          AND Phase = 'Procurement'
          AND Displine = 'Q340'
          AND ROWNUM <= 20
        ORDER BY actCode
      );
    



    1. HibernateでOracleDateを使用する場合の日付/時刻のJavaタイプ

    2. MySQLの複数のWHEREおよび/または条件ロジック

    3. Windowsでmysqlストアドプロシージャをスケジュールする方法は?

    4. Oracleのremainder()関数の動作を理解する