2015-11-10 64 views
0

我有一個SQL查詢來更新記錄。我使用'EXISTS'函數,但速度很慢。現在我想用連接來改變我的查詢。Sql查詢很慢(存在/連接)

UPDATE zp 
SET ZP.TEST1=NULL, 
    ZP.TEST2=NULL, 
    ZP.TEST3=NULL, 
    ZP.TEST4=NULL, 
    ZP.TEST5=NULL, 
    ZP.TEST6=NULL, 
    ZP.TEST7=NULL, 
    ZP.TEST8=NULL, 
    ZP.TEST9=NULL, 
    ZP.TEST10=NULL, 
    ZP.TEST11=NULL, 
    ZP.TEST12=NULL, 
    ZP.TEST13=NULL, 
    ZP.TEST14=NULL, 
    ZP.TEST15=NULL 
from TestTable ZP 
WHERE NOT(
     (ZP.name='I' 
    AND 
     surname='S' 
    OR 
     addr='S' 
    AND 
     ClientID IS NOT NULL) 
    AND EXISTS(
     SELECT * FROM table2 P 
     WHERE P.OrgID=ZP.OrgID AND 
     P.CATEGORY='D' 
    ) 
) 
+3

http://stackoverflow.com/questions/1293330/how-can-i-do-an-update-statement-with-join-in-sql – StanislavL

+0

改進的代碼格式和語法,還增加了內聯代碼以獲得更好的效果可讀性 –

+0

這裏存在真的看起來不是問題。你在加入的列上有索引嗎? – jazza1000

回答

0

輕微效率改進是....

EXISTS(
     SELECT 1 FROM table2 P 
     WHERE P.OrgID=ZP.OrgID AND 
     P.CATEGORY='D' 

即1,而不是*。

但我相信這不是完整的解決方案。