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

大規模なデータベーステーブル用のSQLオプティマイザ

    おそらく、 EXPLAINPLAN から始める必要があります。 。

    次に、質問を編集し、SQLステートメントとEXPLAINPLANの出力を投稿します。

    後で。 。 。

    私はその質問についてあなたにあまり助けをするつもりはありません。 269行、少なくとも29のSELECT、並列クエリ、リモートデータベース、外部結合(古いスタイル)など。

    私があなたに与えることができる最高のアドバイスは

    です
    • EXPLAIN PLANから詳細情報を入手し、
    • 問題を単純化します。

    計画表 一般的に投稿されているよりも多くの列があります。 COST、CARDINALITY、BYTES、およびTIMEの列は、チューニング作業の優先順位付けに役立つ場合があります。

    そのクエリには10回の全表スキャンがあります。 (クエリプランの「TABLEACCESSFULL」。)これは通常、悪い兆候です。全表スキャンは、実行に比較的長い時間がかかることがよくあります。 常にではありません 悪い兆候。小さなテーブルのフルスキャンは、インデックススキャンよりも高速な場合があります。

    クエリ内の29個のSELECTステートメントのそれぞれについてEXPLAINPLAN出力を取得することから始めます。それらのいずれかが全表スキャンを示している場合は、適切なインデックス 。 (Oracleはさまざまな種類のインデックスをサポートしています。複数列のインデックスの機会を見逃さないでください。)いずれの場合も、EXPLAIN PLANの出力は、29のSELECTの中で最も遅いものを特定するのに役立ちます。



    1. MySQL:テーブルロックの代わりに行レベルのトランザクションロックを実現する方法

    2. MySqlクエリを使用して日付の日、月、年を加算および減算する方法

    3. 列のさまざまな値に応じて、mysqlテーブルのレコードをさまざまな列としてカウントします

    4. PostgreSQL-制限付きの2つのテーブルを内部結合します