Hallo habe ein kleines Abfrage Problem.
Ich will ein Userranking erstellen und will dafür die Aktivität der einzelnen User messen. Dafür benötigte ich die Anzahl der Aktivitäten.
Die Tabellen:
Es gibt eine Tabelle User in der die Userdaten stehen.
Es gibt eien Tabelle SMS in der SMS-Einträge der User stehen
Es gibt eien Tabelle Kommentar in der Kommentar der User stehen
Es gibt eien Tabelle Artikel in der Artikel der User stehen
so weit so gut.
Jetzt möchte ich eine Select-Statement bauen das mir folgendes liefert:
UESR | Anzahl SMS| Anzahl Artikel | Anzahl Kommentare |
Prinzipiell wollte ich es mit Joins lösen. In etwas so:
Klappt auch wunderbar, allerdings braucht die Abfrage, trotz entsprechender Indizes, über 1 Minute.
Das ist nicht weiter verwunderlich, denn alleine die Join-Tabellen ergenen bei ca 5500*1600*800 Einträgen ca. 7 Mrd. Datensätze.
Kann man die Abfrage irgendwie beschleunigen? Kann man die Tabellen noch vor dem Join einem Group by unterziehen? Dann würden die Datenmengen kleiner werden und das ganze beschleunigt.
Ich will ein Userranking erstellen und will dafür die Aktivität der einzelnen User messen. Dafür benötigte ich die Anzahl der Aktivitäten.
Die Tabellen:
Es gibt eine Tabelle User in der die Userdaten stehen.
Es gibt eien Tabelle SMS in der SMS-Einträge der User stehen
Es gibt eien Tabelle Kommentar in der Kommentar der User stehen
Es gibt eien Tabelle Artikel in der Artikel der User stehen
so weit so gut.
Jetzt möchte ich eine Select-Statement bauen das mir folgendes liefert:
UESR | Anzahl SMS| Anzahl Artikel | Anzahl Kommentare |
Prinzipiell wollte ich es mit Joins lösen. In etwas so:
Klappt auch wunderbar, allerdings braucht die Abfrage, trotz entsprechender Indizes, über 1 Minute.
Das ist nicht weiter verwunderlich, denn alleine die Join-Tabellen ergenen bei ca 5500*1600*800 Einträgen ca. 7 Mrd. Datensätze.
Kann man die Abfrage irgendwie beschleunigen? Kann man die Tabellen noch vor dem Join einem Group by unterziehen? Dann würden die Datenmengen kleiner werden und das ganze beschleunigt.