Evitar la comparacion por NULL ???

18/09/2006 - 01:34 por Marcelo Otero | Informe spam
Hola Gente: quisiera vuestra opinion acerca de un tema que no se como
remediarlo en algunas situaciones.
He visto, por ejemplo, que si en un JOIN entre 2 tablas en la clausula
WHERE se compara alguno de los campos por NULL o se usa la funcion ISNULL()
el mismo resulta mucho mas lento que si se evita la comparacion con NULL.

En un caso especifico el preguntar por si una fecha era NULL en el where ,
la consulta tardaba 16 segundos, cuando sacandola del where y armando la
consulta de tal manera de evitarla la misma tardo 5 seg.

Mi consulta es: es cierto que al usar NULL en el where los indices de las
tablas afectadas se desactivan y por eso es mas lenta la consulta? o es un
mito esto y solo la casualidad ha hecho que las consultas a las que he
eliminado la comprobacion por NULL o la funcion ISNULL() han sido mas
rapidas desde entonces?

Cordiales Saludos
Marcelo
 

Leer las respuestas

#1 BitOne®
18/09/2006 - 01:39 | Informe spam
si nos dejaras ver esa consulta que dices pudieramo aclarar mejor tu duda
eso por un lado,
por el otro lado en la mayoria de los casas cuando utilizas funciones en el
predicado o Where
estaras contribuyendo a que el motor de base de datos utilize un table Scan
en busca de
recuperar las filas que complen con la condicion.

saludos,

==BitoOne®
www.yocsql.com

==
"Marcelo Otero" wrote in message
news:
Hola Gente: quisiera vuestra opinion acerca de un tema que no se como
remediarlo en algunas situaciones.
He visto, por ejemplo, que si en un JOIN entre 2 tablas en la clausula
WHERE se compara alguno de los campos por NULL o se usa la funcion


ISNULL()
el mismo resulta mucho mas lento que si se evita la comparacion con NULL.

En un caso especifico el preguntar por si una fecha era NULL en el where ,
la consulta tardaba 16 segundos, cuando sacandola del where y armando la
consulta de tal manera de evitarla la misma tardo 5 seg.

Mi consulta es: es cierto que al usar NULL en el where los indices de las
tablas afectadas se desactivan y por eso es mas lenta la consulta? o es un
mito esto y solo la casualidad ha hecho que las consultas a las que he
eliminado la comprobacion por NULL o la funcion ISNULL() han sido mas
rapidas desde entonces?

Cordiales Saludos
Marcelo


Preguntas similares