MAchst du ein Join auf den Datenbanken oder schmeist du ersteinmal die Datenbanken wild mit nem Select * FROM a,b zusammen? Dann muß er erstemal die Kreuztabelle aufbauen.. udn dann rechne nochmal was da an Daten rauskommt...
Oder ist das etwa nur eine Tabelle?
Ja, ist nur eine.
Nebenbei.. wenn die db größer ist.. also verschiedenes enthält sollte man einzelne Tabellen wählen welche 1:n oder n:1 Beziehungen haben.
Ich mache folgendes:
Für jeden Kunden:
|_Für jeden Monat:
|_Für jeden Tag:
|_hole Daten, wo Kunde = "blablabla" UND parameter1 = "blablabla".....
Ich hoffe Du sortierst nicht das was aus der Datenbank kommt, sondern holst es dir schon mit nem Sort raus (geht schneller wenn die DB das macht)
Im Endeffekt komme ich also auf:
4 (Mai - August) * 30 (Tage) * 100 Kunden = Anzahl der Querys....
Nö. Wie ist die DB aufgebaut? Machst Du ein böses select * from bei dem er dann erst aussortiert?
Nein, kein Wildcard!
Schleife wie beschrieben, und dann:
select from TABELLE where kunde = 'id-soundso' and date = '2001-08-20' and parameter1 = 'dasunddas'
also doch ne Wildcard...
Select * From - Du bekommst den ganzen Datensatz zurück an der Stelle an der der Kunde mit der Verknüpfugn steh und nicht nur einzelne Daten .
was Du machst ist jedesmal die komplette Datenbank durchzugehen.
Etwas besser (abe immer noch schlimm) wäre ein
Select * From TABELLE Where date > '2001-08-01' AND date < '2001-08-31' AND parameter1='dasunddas' ORDER BY kunde, date
Heraus kommt ein Feld was geordnet ist.
Auch möglich wäre es z.b. Eine Temp_Table zu schaffen auf der Du arbeitest.. die viel weniger Daten enthält und schneller und weniger arbeitsintensiv durchgearbeitet wird ( CREATE TEMPORARY TABLE temp_Tabelle SELECT * FROM Tabelle WHERE ...)
Du könntest auch mit Group by schon Ergebnisse gruppieren.. also die Arbeit des Scriptes danach vereinfachen..