Sono curioso di sapere quale delle seguenti opzioni sarebbe più efficiente?
Sono sempre stato un po 'cauto nell'utilizzo IN
perché credo che SQL Server trasformi il set di risultati in una grande IF
dichiarazione. Per un set di risultati di grandi dimensioni, ciò potrebbe comportare prestazioni scadenti. Per piccoli set di risultati, non sono sicuro che sia preferibile. Per set di risultati di grandi dimensioni, non EXISTS
sarebbe più efficiente?
WHERE EXISTS (SELECT * FROM Base WHERE bx.BoxID = Base.BoxID AND [Rank] = 2)
vs.
WHERE bx.BoxID IN (SELECT BoxID FROM Base WHERE [Rank = 2])
select 1 from Base...
nella vostra where exists
dal momento che in realtà non si preoccupano dei risultati, solo che una riga esiste realmente.