Sono curioso di sapere quale delle seguenti opzioni sarebbe più efficiente?
Sono sempre stato un po 'cauto nell'utilizzo INperché credo che SQL Server trasformi il set di risultati in una grande IFdichiarazione. 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 EXISTSsarebbe 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 existsdal momento che in realtà non si preoccupano dei risultati, solo che una riga esiste realmente.