Mailinglisten-Archive |
Michael schrieb: > was macht nun mehr sinn: > - einmal die neutrale query für COUNT(*) verwenden und dann > nochmal für die eigentliche ausgabe > > oder > - die komplette query ohne limit nehmen, und bei der ausgabe > in einer for schleife dann limitieren. Ich mach es auf die 2. Weise: Erst alle counten, danach ein SELECT [...] LIMIT [...] Das ist auf alle Fälle bei großen Resultsets resourcenschonender. Ansonsten mach doch mal beide Lösungen und messe die microtime(). Manchmal sind die Ergebnisse verblüffend und nicht unbedingt das was man erwartet. Beispiel bei der Rufnummerdatenbank eines Mobilfunk-Discounters: 100.000 Rufnummern ORDER BY RAND() LIMIT 0,[Anzahl Ergebnisse] -> zeigt in der Rufnummernauswahl [Anzahl Ergebnisse] zufällige Nummern Optimierungsansatz: SELECT COUNT(number) [...] Random Startwert für LIMIT mit PHP generieren, zwischen 0 und COUNT(number) - ]Anzahl Ergebnisse] SELECT [...] LIMIT [Random Startwert], [Anzahl Ergebnisse] Resultat: n Rufnummern in Folge, allerdings mit zufälliger Startnummer -> trotzdem viel langsamer als das erste Statement, auch wenn ich das NIE erwartet hätte (zwar 2 Statements statt einem, aber er muss nicht ALLE Datensätze mischen um nur ein paar auszuwählen). Ergo: Die beste Methode unterscheidet sich von Fall zu Fall, am besten beides implementieren und die Performance messen. Gruß, Andreas -- http://www.andreas-demmer.de http://www.debugconsole.de -- http://www.andreas-demmer.de
php::bar PHP Wiki - Listenarchive