Pregunta

Cuando incluyo las 2 líneas comentadas en la siguiente sub consulta, parece que se tarda una eternidad hasta que mi Sybase ASE 12.5 servidor obtiene ningún resultado. Sin estas 2 líneas de la consulta se ejecuta bien. ¿Qué es tan malo en ese grupo?

select days_played.day_played, count(distinct days_played.user_id) as OLD_users
from days_played inner join days_received
on days_played.day_played = days_received.day_received
and days_played.user_id = days_received.user_id
where days_received.min_bulk_MT > days_played.min_MO
and days_played.user_id in

(select sgia.user_id 
from days_played as sgia
where sgia.day_played < days_played.day_played
--group by sgia.user_id 
--having sum(sgia.B_first_msg) = 0
)

group by days_played.day_played
¿Fue útil?

Solución 3

ok descubrí cuál era el problema Tenía que incluyen la identificación del usuario en la sub consulta: "donde days_played.user_id = sgia.user_id y sgia.day_played

Otros consejos

Para saber lo que hace la consulta utilizando el plan de presentación para mostrar la explicación.

En este caso no se puede eliminar la sub consulta por lo que es parte de la consulta principal?

Podría intente volver a escribir la consulta de la siguiente manera?

select days_played.day_played,
       count(distinct days_played.user_id) as OLD_users
  from days_played
 inner join days_received on days_played.day_played = days_received.day_received
                         and days_played.user_id = days_received.user_id
 where days_received.min_bulk_MT > days_played.min_MO
   and 0 = (select sum(sgia.B_first_msg)
              from days_played as sgia
             where sgia.user_id = days_played.user_id
               and sgia.day_played < days_played.day_played
            )
 group by days_played.day_played

Creo que esto debe darle un mejor rendimiento ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top