Frage

Wenn ich die 2 kommentierten Zeilen in die folgende Unterabfrage einbeziehe, scheint es ewig zu dauern, bis mein Sybase 12.5 ASE -Server irgendwelche Ergebnisse erzielt. Ohne diese 2 Zeilen läuft die Abfrage in Ordnung. Was ist so falsch mit dieser Gruppierung?

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
War es hilfreich?

Lösung 3

Ok, ich habe herausgefunden, was das Problem war, musste ich Benutzer -ID in die Unterabfrage einbeziehen: "Wo Days_played.user_id = sgia.user_id und sgia.day_played <Days_played.day_played"

Andere Tipps

Finden Sie heraus, was die Abfrage macht, indem Sie Showplan verwenden, um die Erklärung anzuzeigen.

Können Sie in diesem Fall die Unterabfrage nicht beseitigen, indem Sie sie Teil der Hauptanfrage machen?

Könnten Sie versuchen, die Abfrage wie folgt neu zu schreiben?

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

Ich denke, das sollte Ihnen eine bessere Leistung geben ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top