Hace años, era común escribir
where exists (Select * from some_table where some_condition)
El año pasado noté que muchos scripts de t-sql cambiaron a usar el número 1 en lugar de la estrella
where exists (Select 1 from some_table where some_condition)
solo en SO vi este ejemplo de Oracle
WHERE EXISTS (SELECT NULL FROM ...
¿Es este un patrón común con Oracle? Y cuáles son los argumentos de rendimiento para usar algo como esto.
oracle
sql-server
style
bernd_k
fuente
fuente
Respuestas:
Respuesta corta: ¡espero que no!
Incluso el
SELECT 1
idioma puede haber sobrevivido a su utilidad, ya que los motores de base de datos han avanzado lo suficiente como para reconocer que realmente no quieres las filas, solo quieres saber si las filas existen. Observé los planes de ejecución en SQL 2005 y, en general, los he visto reescritos como combinaciones, incluso cuandoSELECT *
se usan.fuente
En Oracle no importa el rendimiento sabio. Incluso puede poner 1/0 allí y la declaración no devolverá un error de división por cero porque la expresión no se evalúa.
fuente