查询多个Oracle数据库的性能问题

查询多个Oracle数据库的性能问题,oracle,oracle10g,Oracle,Oracle10g,我在这两个数据库的这些表中都有超过百万条记录。 我试图找出数据库中两个表中的数据 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 这个查询需要很长时间。有什么办法能让我快点

我在这两个数据库的这些表中都有超过百万条记录。 我试图找出数据库中两个表中的数据

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
这个查询需要很长时间。有什么办法能让我快点吗


提前感谢您的帮助

您指的是不同的数据库吗?还是说不同的模式?您讨论的是不同的数据库,但语法似乎使用两个不同模式中的表,而不是两个不同的数据库。如果有两个不同的数据库,我看不到对数据库链接的任何引用,但可能
DB2.MYTABLE
应该是
MYTABLE@DB2

如果您可以发布生成的查询计划,这将非常有用。指出存在哪些索引以及这些谓词的选择性也很有用。我的猜测是,将查询修改为

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
如果由于
SCHEMA2.MYTABLE
中存在
SEQ\u NO
而消除了
SCHEMA1.MYTABLE
中的大多数行,则效率可能会更高