phpbar.de logo

Mailinglisten-Archive

[php] [php/mysql] Harte Nuss - Aggregatfunktionen

[php] [php/mysql] Harte Nuss - Aggregatfunktionen

Norbert Pfeiffer norbert at itbw.de
Fre Jun 17 15:08:26 CEST 2005


Hi,

die Methode " ... ORDER BY LIMIT $offset, $anzahl" wird bei
groesseren Tabellen immer sehr langsam. Wenn eine Suche z.B.
rund 3000 Treffer ergibt und man jeweils 10 auf einer Seite
anzeigen will, klappt das auf den ersten Seiten wunderbar.
Aber gegen Ende wird das total zaehfliessend ...

Wie machen das eigentlich andere Datenbank-Systeme, bei denen
es den Konstrukt "... LIMIT $offset, $anzahl" gar nicht gibt?


Eine Methode um die Abfrage schneller zu machen ist z.B.
Das Ergebnis von:
SELECT id WHERE $where ODER BY $order;
in ein einspaltiges Array schreiben und in der Session ablegen.
Die eigentliche Abfrage lautet dann:
SELECT * WHERE id IN $teil;
wobei $teil die aktuelle Teilmenge des gespeicherten Arrays ist.


So richtig optimal ist das IMHO noch nicht, aber deutlich
schneller als die Variante mit "... LIMIT $offset, $anzahl".


m. b. G. Norbert
_____________________
normal:  02682-966898
Notruf:  0163-3613642
---------------------
e.o.m.


php::bar PHP Wiki   -   Listenarchive