2010-01-21 11 views
18

¿Qué es más rápido?SQL Server: Seleccione en vs o?

SELECT UserName 
FROM dbo.UserTable 
WHERE UserID in (1,3,4) 

SELECT UserName 
FROM dbo.UserTable 
WHERE UserID = 1 
     OR UserID = 3 
     OR UserID = 4 
+0

http://stackoverflow.com/questions/3074713/in-vs-or-in-the-sql-where-clause – rdo

Respuesta

23

Debido a la optimización de las consultas de estos se ejecutan a la misma velocidad, ya que son lógicamente equivalentes de SQL Server.

prefiero sin embargo la sintaxis IN por brevedad y legibilidad.

+1

¿En lugar de Or/In hay alguna manera de consultar? que funcionará más rápido? – Worgon

+1

@Worgon si el número de valores es grande, puede poner los valores distintos en una tabla temporal indexada y unirse a eso. –

7

En realidad es lo mismo.

Si visualiza el plan de ejecución estimado, verá que está realizando la misma acción.

-1

Esto es relevante cuando se trata de producir SQL a través de Linq. Hay algunos casos donde el sql creado tiene la forma de: campo = 'xxx' O campo = 'yyy'.

+0

¿Puedes aclarar eso? No tengo idea de lo que estás diciendo. – tbodt