Tengo curiosidad por saber cuál de las siguientes opciones sería más eficiente?
Siempre he sido un poco cauteloso sobre el uso de IN
porque creo que SQL Server convierte el conjunto de resultados en una gran declaración IF
. Para un gran conjunto de resultados, esto podría dar como resultado un bajo rendimiento. Para pequeños conjuntos de resultados, no estoy seguro de que sea preferible. Para grandes conjuntos de resultados, ¿no sería más eficiente el EXISTS
?SQL Server IN vs. EXISTS Rendimiento
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])
La mejor manera de averiguarlo es probarlo y hacer algunas mediciones. –
hay ** got ** para ser un montón de duplicados para esto ...... –
@marc_s: sí, pero creo que realmente depende de cada caso. Supongo que la respuesta canónica es klausbyskov (o quien quiera reclamar el estado de la técnica). – RedFilter