我需要關於如何分解這個查詢的建議,所以它不那麼慢。我一直在閱讀EXISTS和UNION,但我不確定如何在這種情況下使用它們。 LineA/B/C都是nvarchar(max),我不能將連接更改爲除文本外的其他內容。必須排隊,不幸的是。TSQL - 關於如何在JOIN中分解OR條件的建議
UPDATE n SET AddressID = a.AddressID
FROM #NewAddress n
JOIN dbo.Address a
ON (a.[LineA] = n.[LineA] OR (a.[LineA] is null AND n.[LineA] is null))
AND (a.[LineB] = n.[LineB] OR (a.[LineB] is null AND n.[LineB] is null))
AND (a.[LineC] = n.[LineC] OR (a.[LineC] is null AND n.[LineC] is null))
WHERE n.Processed = 0
如何UNION任何意見或存在此查詢?這似乎是一個很常見的連接條件我遇到
我不知道如何發佈查詢計劃,但像他這樣
SELECT 0% <---- Hash Match (Inner Join) 75% <------- Clustered Index Scan 0%
<------- Clustered Index Scan 25%
這些行沒有被索引,因爲他們是真正的小是nvarchar(最大)。我不能索引dbo.Address要麼
- 已解決
我#NewAddress添加一個索引到處理的列。顯然,這是緩慢的部分
可以'LineA'真的爲空?如果'LineA'的意思是'AddressLine1',我對您的數據完整性持懷疑態度...... – canon 2013-05-07 18:49:16
發佈查詢計劃。 – kenchilada 2013-05-07 18:49:19
是的,它可以爲空。非常粗略,我知道。這是我已經處理的手 – user1002479 2013-05-07 18:57:06