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