2010-04-29 7 views
6

Pensé que le haría una pregunta a la comunidad de StackOverflow con conocimientos que tenía en mente hoy y no puedo encontrar una respuesta.¿Hay alguna diferencia de rendimiento entre una instrucción SQL "IN" en comparación con el uso de "O"?

¿Existe alguna diferencia de rendimiento o ventaja entre una "ENTRADA" o el uso de "O"?

Ie. Es

SELECT tipo a partir de tipos DONDE typecat IN ('abc', 'def')

mejor que

SELECT tipo a partir de tipos DONDE typecat = 'abc' OR typecat = 'def'

Adición: El uso de SQL Server 2008

+1

¿Qué servidor? SQL Server, MySQL, Postgres, Oracle ...? –

+2

Una vez hice esta pregunta: http://stackoverflow.com/questions/2343242/sql-where-field-in-vs-where-field-with-multiple-ors – froadie

+0

Lo siento, usando SQL Server 2008. –

Respuesta

1

Si recuerdo correctamente, SQL Server convierte la instrucción IN que tiene en la instrucción OR.

1

no, no hay ninguna diferencia de rendimiento. El optimizador se ocupa de eso.

2

Esto depende completamente del producto SQL que esté utilizando, que no ha indicado. Un RDBMS que uso regularmente no puede usar índices para la versión OR.

+0

¿Desea revelar el nombre de dicho RDBMS? –

+0

R: Base (ráfaga del pasado). –

+0

Lo siento, usando SQL Server 2008. –

Cuestiones relacionadas