我在Oracle11g中有这个查询:
SELECT DOC_ID,DOC_NAME,DESC
FROM TABLE1
WHERE DOC_ID NOT IN(
SELECT DOC_ID FROM TABLE2
)
上面的sql查询运行速度很慢,因为表中有这么多数据
是否有任何解决方案可以获得相同的结果,性能更好,运行速度更快?
任何帮助非常感谢。
感谢。
答案 0 :(得分:2)
使用WHERE EXISTS
可能会有更好的效果:
SELECT DOC_ID,DOC_NAME,DESCr
FROM TABLE1 t1
WHERE not exists (
SELECT 1 FROM TABLE2 where
doc_id = t1.doc_id
);
答案 1 :(得分:1)
我不会使用in语句。如果你加入我想象的是你的一把钥匙,它应该快得多:
select tb1.DOC_ID, tb1.DOC_NAME, tb1.DESC
from table1 tb1
left join table2 tb2
on tb1.DOC_ID = tb2.DOC_ID
where tab2.DOC_ID is not null