Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Having vs where.¿Gana el where?

Estas en el tema de Having vs where.¿Gana el where? en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 21/09/2011, 14:11
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 12 años, 7 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?.
  #2 (permalink)  
Antiguo 22/09/2011, 07:29
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 12 años, 7 meses
Puntos: 48
Respuesta: Having vs where.¿Gana el where?

Me autorespondo.
resulta que la consulta_gigantesca del where no era la misma que iva en el select(seguia siendo grande pero era mas chica que la del select) y por eso el having duraba más.

en el having realizaba la consulta_gigantesca y en el where realizaba otra pero esa era más pequeña. Al realizar la comparacion de los tiempos en ambos con la consulta_gigantesca el having duraba mucho menos.

Etiquetas: subconsulta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:48.