Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/09/2011, 14:11
Avatar de Rodrhigo
Rodrhigo
 
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 12 años, 8 meses
Puntos: 48
Pregunta Having vs where.¿Gana el where?

La pregunta:¿Gana el where? puede sonar estupida porque para que existitia el having si el where es mejor pero ocurre lo siguiente.

Envio una consulta gigantesca a mi base de datos y nesecito traer un valor en el select_exp y nesecito valorar que esos valores sean mayores a 0(where). Resulta que antes lo hacia asi:

select consulta_gigantesca from tabla where consulta_gigantesca>0

consulta_gigantesca: No es un campo. sino una consulta grande sacada de multiples campos y otros valores.

Despues conoci el having y era justamente lo que nesecitaba para evitar enviar la consulta_gigantesca 2 veces y haci optimizar la consulta.ejemplo:

select consulta_gigantesca as consulta from tabla having consulta>0

Pero resulta que al calcular el tiempo de ejecución con where y con having el que gana es el where .

El con where demora 0,045 en promedio.
El con having demora 0,052 en promedio.

Esta consulta se va a realizar muchas veces en el dia y no se cual usar.
a simple vista es mejor el where pero puede ser porque aun tengo muy pocos registro en donde se aplica la consulta_grande y cuando tenga más registros el having gane.
La pregunta es ¿Cual es correcto usar?.