Имате конкатенация на колони, която предотвратява използването на индекси
Опитайте NOT EXISTS, което ще поддържа 2-те колони поотделно
SELECT distinct
o.casino_id, g.game_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'
AND
NOT EXISTS (SELECT *
FROM
thirdpartysettlecalled tp
WHERE
tp.[status] = 'Y'
AND
tp.casino_id = o.casino_id AND tp.game_id = g.game_id)
ORDER BY
casino_id
След това проверете вашите индекси или курс...
Това е добра употреба на ОСВЕН също (ORDER BY отива в края като UNION:благодарение на @Damien_The_Unbeliever)
SELECT distinct
o.casino_id, g.game_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'
EXCEPT
SELECT tp.casino_id, tp.game_id
FROM thirdpartysettlecalled tp
WHERE tp.[status] = 'Y'
ORDER BY
casino_id