2016-09-14 73 views
0

我有一個問題,並將不勝感激,如果任何人都可以提供幫助。查找記錄沒有在另一個表

我有兩個表(REPL_SEND和Repl_Finish兩者都具有4列

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

UID是在兩個表中不同(它是用於表的主鍵)

它們可以在ReportId有重複值和reportIDVersion

我想要reportID/reportIDVersionREPL_SEND,這樣reportID/reportIDVersion這樣的組合是不存在於Repl_Finish

我的嘗試:

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

這將返回各地的12000條記錄。但是,當我試圖

SELECT t1.reportID 
FROM REPL_SEND t1 (nolock) 
LEFT JOIN Repl_Finish t2 (nolock) ON t2.reportID = t1.reportID 

我沒有得到任何值(我的意思是DB正在很長一段時間,15個分鐘之後,仍在執行)

問題1:是我第一次查詢的正確嗎? [主要問題]

問題2:爲什麼第二次查詢需要這麼多時間?

回答

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列添加索引兩個表中

+0

我apologies.UID在兩個不同table.UID是不同的主鍵表 – vic90

相關問題