Mailinglisten-Archive |
Moin, > Scheinbar hat da MySQL ein Optimierungsproblem beim unsortierten Zugriff und > der Verwendung von LIMIT (dabei wärs doch so einfach). hmmm... wie ich ja schrieb, zeigt die Status-Anzeige "sending data", nicht aber "sorting" (das Sorting geht innerhalb von ein, zwei Sekunden vonstatten). Dies deutet mir weniger auf ein Optimierungsproblem beim unsortierten Zugriff hin - oder? > 1. Hast Du das ganze auch mal mit "mysql_use_result" beim Abfragen probiert? > Dann wäre es u.U. auch nicht nötig einzelne Blöcke per LIMIT abzufragen. > 2. Über einen Schlüssel (unique) anstatt über Limit die Abfrage eingrenzen. > GGf. ist da natürlich regelmäßig nach Delete/Insert ein Renumber-update (in > der Update-schleife) fällig, aber bei den paar Sätzen. Zu beiden Vorschlägen ist zu sagen, daß das Limit deshalb eingesetzt wird, weil von allen möglichen Suchergebnissen immer nur ein paar gebraucht werden (es wird in der Applikation nicht _immer_ nach "*" gesucht sondern - natürlich - auch nach eingegrenzten Werten). Da es in keinster Weise vorhersehbar ist, WELCHE Seiten vom Anwender gebraucht werden (sprich: welche Zeilen per Limit abgefragt werden müssen), deucht mich ein "use_result" die Sache nur im Test-Bereich zu beschleunigen. > 3. Wenn möglich, verwende für die Tabelle eine fixe Record-Größe (Platz ist > ja genug). Verwende als Datentyp dann CHAR anstatt VARCHAR. Ja, in dieser Richtung haben wir schon einige Tests gemacht, hat aber leider nicht viel gebracht (genau genommen: so gut wie gar nichts - auch das Ändern von "text" (ursprünglich verwendet) auf "varchar 32" (als Beispiel) hat effektiv 0 gebracht (varchar lässt sich, meines Wissens, aber auch auf fixed size einstellen, was zu einer Maximal-Länge führt - sollte doch einen ähnlichen Effekt haben, oder?`) Marc Albrecht --- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive