2011-09-14 16 views
2

これらの表には、両方のデータベースの100万を超えるレコードがあります。 私は両方のテーブルacrosデータベースのデータを把握しようとしています。複数のOracleデータベースの問合せパフォーマンスの問題

SELECT COUNT(*) FROM DB1.MYTABLE WHERE SEQ_NO NOT IN(SELECT SEQ_NO FROM DB2.MYTABLE) AND FILENAME NOT LIKE '%{%' 
and PT_TYPE NOT IN(15,24,268,284,285,286,12,17,9,290,214,73) AND STTS=1 

クエリに時間がかかります。私はそれを速くすることができる方法はありますか?

は、あなたが実際には異なるデータベースを意味するか、事前に

答えて

2

を、あなたの助けに感謝しますか?それとも別のスキーマを意味するのですか?あなたは異なるデータベースについて話しますが、構文は異なる2つのデータベースではなく、2つの異なるスキーマのテーブルを使用しているように見えます。 2つの異なるデータベースがあり、DB2.MYTABLE[email protected]の同義語であると思われる場合に必要となるデータベースリンクへの参照はありません。

生成されたクエリプランを投稿できると便利です。どの索引が存在し、どの述語がどのように選択的であるかを示すことも有用である。私の推測では、SCHEMA1.MYTABLE内の行の大半が除去されている場合SEQ_NOSCHEMA2.MYTABLEに存在するため

SELECT count(*) 
    FROM schema1.mytable a 
WHERE NOT EXISTS (
    SELECT 1 
     FROM schema2.mytable b 
    WHERE a.seq_no = b.seq_no) 
    AND a.filename NOT LIKE '%{%' 
    AND a.pt_type NOT IN (15,24,268,284,285,286,12,17,9,290,214,73) 
    AND a.stts = 1 

ようにクエリを変更すると、より効率的であるかもしれないということです。

関連する問題