我試圖做一些基本的維恩圖減法來比較臨時表和一些實時數據,並看看它們是如何不同的。神祕查詢失敗:爲什麼這會產生大量輸出?
這個查詢在1500萬個返回行的北部發生了爆炸,並且我注意到它重複了一個已知的唯一字段 - 表明我的查詢出現了一些錯誤(我的意思是,行被複制,我可以通過這個全局唯一標識符字段來驗證)。我期待獲得最多200行返回:
select a.*
from TableOfLiveData a
inner join #TempDataToBeSubtracted b
on a.GUID <> b.guidTemp --I suspect the issue is here
where {here was a limiting condition that should have reduced my live
data to a "pre-join" count(*) of 20,000 at most...}
後我打了執行查詢運行更長的時間比預期的,我可以看到,在我不得不取消了正在返回數百萬行的。
讓我知道什麼是顯而易見的事!!?
編輯:供參考:如果其中不包括條款,我希望返回行的大量...
我的意思是,你很可能在兩張表之間執行差不多的笛卡爾積。考慮一下,從第一個表中取一個'GUID'的值,並且你得到第二個表的每一行的結果,其中'guidTemp'不等於 – Lamak
@Lamak,我想到了同樣的想法...但是它是內部連接?! – ColinMac
內部聯接只是一個交叉聯接,其中包含對所有行進行評估的聯接謂詞。在所有行上進行交叉連接評估'a.GUID <> b.guidTemp'並將其保留爲真。 –