Mailinglisten-Archive |
> derzeit blaettere ich in einem Suchergebnis mit
> ... LIMIT $offset, $pgsize
>
> Leider gibt es damit unuebersehbare Performace-Probleme,
> wenn man haeufige Worte sucht ('Goethe', 'Liebe', o.ae.),
> und den Resultset durchblaettern moechte ...
>
> ... LIMIT 30, 10 - geht ja noch, aber bei
> ... LIMIT 3000,10 - sucht MySQL sich 'nen Wolf
>
> In der DB kommt 3745 mal 'Goethe' und 7433 mal 'Liebe' vor.
>
> Hat dazu irgend jemand eine Idee, wie das schneller geht ?
>
> PS:
> Wie machen das eigentlich DB's die kein LIMIT kennen ?
Hi Stefan,
Bei LIMIT muss der ja erst den 3000sten Datensatz finden und das
dauert. Da ich ja annehme, dass du das über ne Middleware laufen hast
merk dir doch einfach die letzte DS - ID und machs so:
Select * from tabelle where [..dein like..] AND id > $letzterDS_id
Limit 0, 10
bei kleiner:
Select * from tabelle where [..dein like..] AND id < $ersterDS_id
Order By id desc Limit 0, 10
Geht in jedem Fall schneller. Hier kannst du aber nur in
Zehnerschritten vor bzw zurück...
Ob der Client da aber die Lust hat das alles durchzublättern ist ne
andere Frage...
Bei so viel Liebe in der Datenbank kommt der ja gar nicht mehr zum
wesentlichen... ;-))
MfG Wolfgang
--
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive