domingo, 6 de junio de 2010

EXIST, NOT EXIST, IN , NOT IN

Son iguales??? hay diferencias????

EXIST e IN, son sustituibles semánticamente, pero en cuanto a performance hay que analizar cual se debe utilizar:

Dependerá del cada caso en particular, pero como regla general podemos utilizar la cantidad de filas que tienen las tablas en la consulta.

Si la tabla de la sub consulta tiene muchas filas y la de “afuera” es chica se debe utilizar EXIST, por otro lado si la tabla de “afuera” es grande y la de “adentro” es chica se debe utilizar IN.

En cuanto a Not EXIST y NOT IN la cosa es diferente: NO SON SEMANTICAMENTE IGUALES ya que los NULLs en la subconsulta producen diferencias (serán semánticamente iguales si la sub consulta no devuelve NULLS).

En cuanto a la performance NOT IN, si hay nulls, es el enemigo!!! Es totalmente ineficiente… es necesario cambiarlo por NOT EXIST!

Por qué NOT IN y NOT EXIST no son iguales semánticamente cuando hay nulos?

Eso queda para el siguiente post :D
Pero vayan sabiendo que no es lo mismo..y tienen que utilizar Not Exist !!!

No hay comentarios:

Publicar un comentario