查找不在另一个表

时间:2016-09-14 15:27:09

标签: mysql plsql

我有一个问题,如果有人能提供帮助,我将不胜感激。

我有两个表(REPL_SEND和Repl_Finish都有4列

UID (varchar)
reportID (varchar)
reportIDVersion (varchar)
replSendDTM (datetime)

UID在两个表中都不同(它是表的主键)

它们可能在ReportIdreportIDVersion中具有重复值。

我希望来自reportID/reportIDVersion的{​​{1}},REPL_SEND中不存在reportID/reportIDVersion的这种组合。

我尝试了什么:

Repl_Finish

这将返回大约12000条记录。但是当我尝试

SELECT *
FROM REPL_SEND (nolock) 
WHERE reportID NOT IN (SELECT reportID FROM Repl_Finish)

我没有得到任何值(我的意思是DB花了很长时间,仍然在15分钟后执行)

问题#1:我的第一个查询是否正确? [主要问题]

问题2:为什么第二次查询需要花费这么多时间?

1 个答案:

答案 0 :(得分:0)

问题1:

SELECT *
FROM REPL_SEND (nolock) WHERE UID NOT IN
(SELECT rs.UID FROM 
     Repl_Finish as rf, REPL_SEND as rs
     where rf.reportID = rs.reportID 
     and rf.reportIDVersion = rs.reportIDVersion 

)

问题2:可能需要在两个表中的reportID和reportIDVersion列上添加索引