我正在嘗試重構幾個舊的代碼段......我重構了下面的當前塊,並突出顯示了導致性能問題的NOT IN
語句。我試圖用左外連接重寫NOT IN
部分。SQL NOT IN可能的性能問題
任何人都可以幫助,或者如果可能的話建議更好的方法嗎?
SELECT
left(unique_id,16) AS casino_id ,
right(unique_id,24) AS game_id
FROM (
SELECT
distinct o.casino_id + g.game_id AS unique_id
FROM
game g INNER JOIN Bet b
ON g.game_id = b.game_id
INNER JOIN CasinoUser u
ON b.user_id = u.user_id
INNER JOIN onewalletcasino o
ON u.casino_id = o.casino_id
WHERE
game_start between dateadd(mi, -180, getdate())
and dateadd(mi, -5, getdate())
and b.[status] <> 'P'
) t
WHERE
unique_id NOT in
(SELECT casino_id + game_id AS casino_id
FROM
thirdpartysettlecalled
WHERE
[status] = 'Y')
ORDER BY casino_id
在最後一行我猜[狀態]也可以是'N',所以簡單地取出'NOT'並用'N'取代'Y',從而消除NOT? –
我敢打賭0.01 $'NOT IN'不是問題。 –
我一直在回答答案,投了一對夫婦,但我的評級沒有出現,認爲我沒有正確完成它,但我花時間感謝人們..也許你有太多的時間來寫這些評論,並提供沒有答案! –