Ver Mensaje Individual
  #5 (permalink)  
Antiguo 18/06/2013, 05:27
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Varios count() en la misma consulta

Cita:
Iniciado por eraw Ver Mensaje
Gracias!! pero al final lo he resuelto con subconsultas, el problema es que para cada count() el select es bastante grande, espero que no se me relentice en exceso al consulta

Mi solución ha sido:

Código MySQL:
Ver original
  1. select campo1, (select count(campo1) from where etc...), (select count(campo1) form where etc...), (select count(campo1) form where etc...)
  2. from tabla
  3. where etc...


y así hasta el infinito. No se si una consulta que al final son 100 líneas de consultas repitiendo las consultas pero cambiando a veces sólo una línea es lo más correccto...
Pues, te comento que hacerlo de ese modo te resultará terriblemente ineficiente en un momento dado muy cercano.
Es recomendable evitar las subconsultas en el SELECT, lo mismo que en el WHERE, ya que en ambos casos cada subconsulta se ejecutará una vez por cada registro devuelto del SELECT principal... Y en caso de campos no indexados, eso implicaría hacer un full table scan por cada valor a obtener.
Tal vez te puedas imaginar lo que haría eso a la perfomance.

Lo que @quimfv te propone, por otro lado, hace un único table scan, obteniendo el resultado mucho más rápidamente.
Te recomiendo usar ese modo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)