Moin !!
Folgendes Problem:
Ich habe eine Datenbank mit 10000 Datensätzen. Für diese Daten werden onthefly Balkendiagramme erstellt. Wenn man einfach nur den einen Wert gegen den anderen stellt ist das alles auch recht einfach und funktioniert auch. Nun bin ich aber an einem Problem dran:
Es gibt die Möglichkeit Schrittweise ein Diagramm zu erstellen. Soll heissen: User XY möchte gerne aus dem Jahr 1950 bis 2010 alle Daten mit einer Schrittweite von 2 Jahren pro Barchart haben. (hab jetzt hier das Beispiel mit den Jahren genommen, da es das einfachste für Aussenstehende ist)
Hier habe ich 2 (bzw. 3) Möglichkeiten gefunden das zu regeln:
1. 60 einzelne SQL-Abfragen in einer Schleife
2. Gefakte UNION-Abfrage (Nicht mit Jahren, aber von der Art das gleiche):
3. eine "echte" Union-Abfrage ...fällt aber leider weg, da halt nochnicht überall verfügbar ist.
So Problem ist: Version 1 und 2 laufen bei einer Schrittanzahl von 50-100 noch recht schnell. Beide Versionen nehmen sich nicht viel in Sachen geschwindigkeit. Aber es gibt auchnoch andere Sachen zum Abfragen (nicht nur Jahreszahlen), bei denen man theoretisch über 1000 Schritte kommen kann. Ich habe es bisher auf 500 Schritte geblockt, damit es noch einigermassen "fix" geht.
Tja... das wars eigentlich schon. Hat irgendwer dazu eine andere/bessere Lösung?
Danke und schönen Gruss
Jan
Folgendes Problem:
Ich habe eine Datenbank mit 10000 Datensätzen. Für diese Daten werden onthefly Balkendiagramme erstellt. Wenn man einfach nur den einen Wert gegen den anderen stellt ist das alles auch recht einfach und funktioniert auch. Nun bin ich aber an einem Problem dran:
Es gibt die Möglichkeit Schrittweise ein Diagramm zu erstellen. Soll heissen: User XY möchte gerne aus dem Jahr 1950 bis 2010 alle Daten mit einer Schrittweite von 2 Jahren pro Barchart haben. (hab jetzt hier das Beispiel mit den Jahren genommen, da es das einfachste für Aussenstehende ist)
Hier habe ich 2 (bzw. 3) Möglichkeiten gefunden das zu regeln:
1. 60 einzelne SQL-Abfragen in einer Schleife
2. Gefakte UNION-Abfrage (Nicht mit Jahren, aber von der Art das gleiche):
Code:
SELECT sum( units ) AS units, ( capacity / units BETWEEN 0 AND 9 ) AS '0-9', ( capacity / units BETWEEN 10 AND 19 ) AS '10-19', ( capacity / units BETWEEN 20 AND 29 ) AS '20-29', ( capacity / units BETWEEN 30 AND 39 ) AS '30-39', ( capacity / units BETWEEN 40 AND 49 ) AS '40-49', ( capacity / units BETWEEN 50 AND 59 ) AS '50-59', ( capacity / units BETWEEN 60 AND 69 ) AS '60-69', ( capacity / units BETWEEN 70 AND 79 ) AS '70-79', ( capacity / units BETWEEN 80 AND 89 ) AS '80-89', ( capacity / units BETWEEN 90 AND 99 ) AS '90-99', ( capacity / units BETWEEN 100 AND 109 ) AS '100-109' FROM d_plants WHERE capacity / units BETWEEN 0 AND 109 GROUP BY 2, 3, 4, 5, 6, 7, 8,9,10,11,12 ORDER BY 12,11,10,9,8,7,6,5,4,3,2
So Problem ist: Version 1 und 2 laufen bei einer Schrittanzahl von 50-100 noch recht schnell. Beide Versionen nehmen sich nicht viel in Sachen geschwindigkeit. Aber es gibt auchnoch andere Sachen zum Abfragen (nicht nur Jahreszahlen), bei denen man theoretisch über 1000 Schritte kommen kann. Ich habe es bisher auf 500 Schritte geblockt, damit es noch einigermassen "fix" geht.
Tja... das wars eigentlich schon. Hat irgendwer dazu eine andere/bessere Lösung?
Danke und schönen Gruss
Jan
Kommentar