Beitrag von Olaf Mertgen (263 Beiträge) am Dienstag, 15.Januar.2002, 20:11. WWW: www.shareware4u.de
Wie hole ich nur die ersten 100 Datensätze
Hallo,
ich möchte aus einer großen Tabelle bei einer bestimmten Sortierung nur die ersten 100 Datensätze (Top 100). Wenn ich mit range arbeite, erhalte ich zwar nur die ersten 100 für die aktuelle Schleife, aber es werden scheinbar trotzdem alle Datensätze geholt, die die Bedingungen erfüllen, denn die Aufrufzeiten sind recht hoch.
Hat jemand eine Idee?
Gruß, Olaf
Antworten
Beitrag von Sander (8133 Beiträge) am Dienstag, 15.Januar.2002, 20:16.
Re: Wie hole ich nur die ersten 100 Datensätze
sind sie zeiten gleichgroß wie ohne range?
Also ich merke schon deutlich einen unterschied.
Sander
Antworten
Beitrag von Olaf Mertgen (263 Beiträge) am Dienstag, 15.Januar.2002, 22:21. WWW: www.shareware4u.de
Re: Wie hole ich nur die ersten 100 Datensätze
Das kann ich nicht genau sagen.
Wenn ich allerdings mit range=0,20 auf 3500 Datensätze zugreife, braucht es deutlich länger, als wenn ich mit range=0,20 auf nur 100 Datensätze zugreife, wirklich deutlich länger.
Gruß, Olaf
Antworten
Beitrag von Oliver ;-) (439 Beiträge) am Mittwoch, 16.Januar.2002, 09:25.
Re: Wie hole ich nur die ersten 100 Datensätze
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 16.Januar.2002, 13:45.
Re: Wie hole ich nur die ersten 100 Datensätze
Sind denn dabei die Abfragen identisch? An sich ist es (relativ) egal wie gross die DB ist, wenn man mit range arbeitet - das holt tatsächlich nur die angegebene Anzahl (also hier 20) an Datensätzen...
Antworten
Beitrag von Olaf Mertgen (263 Beiträge) am Mittwoch, 16.Januar.2002, 16:09. WWW: www.shareware4u.de
Re: Wie hole ich nur die ersten 100 Datensätze
Ja, die Abfragen sind identisch, die einzige Änderung ist ist der Wert einer Bedingung, mal > 3, mal > 10. Bei > 10 enthält das Gesamtergebnis etwas nur 1/3 der Datensätze wie bei > 3. Mit runtime betrachtet geht der Aufruf wirklich deutlich schneller.
Ich habe jetzt allerdings getrickst, indem ich die Tabelle in 5 kleine Tabellen mit Beziehung 1:1 zerlegt habe. Davon enthält eine Tabelle nur noch die wenigen indizierten Felder, über die die Abfrage sortiert und filtert. Die anderen Informationen hole ich dann in der Schleife mit einem einfachen get. Dadurch hole ich insgesamt weniger Infos und die komplizierte Abfrage mit sort etc. läuft über eine kleine Tabelle.
Gruß, Olaf
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 16.Januar.2002, 16:52.
Re: Wie hole ich nur die ersten 100 Datensätze
1/3 Gesamtergebnis: Dann hast Du aber nich mit "range" gearbeitet weil dann müsste das Gesamtergebnis ja immer die Anzahl sein die Du bei range angegeben hast ;-)
Ansonsten is natürlich klar: Wenn er mehr holen muss dauerts natürlich länger...
Klingt ganz schön kompliziert mit der Aufteilung etc. - mich würde schon interessieren, was Du da genau machen willst, vielleicht kann man das konzeptionell besser machen ,-)
Antworten
Beitrag von Olaf Mertgen (263 Beiträge) am Mittwoch, 16.Januar.2002, 17:23. WWW: www.shareware4u.de
Re: Wie hole ich nur die ersten 100 Datensätze
Doch doch, ich hab schon mit range gearbeitet :-)
Beispiel:
get "Downloads>3 sort=-Downloads range=0,30", "downloadcounter";
$_amount liefert 30, $_amount_query liefert 300
get "Downloads>10 sort=-Downloads range=0,30", "downloadcounter";
$_amount liefert 30, $_amount_query liefert 100
D.h. das Ergebnis mit range ist exakt das gleiche, sowohl bzgl Anzahl auch Inhalt der Datensätze, trotzdem ist die zweite Variante laut runtime schneller.
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 17.Januar.2002, 00:21.
Re: Wie hole ich nur die ersten 100 Datensätze
Antworten
Beitrag von Olaf Mertgen (263 Beiträge) am Donnerstag, 17.Januar.2002, 02:17. WWW: www.shareware4u.de
Re: Wie hole ich nur die ersten 100 Datensätze
Das war leider nur ein modifiziertes Beispiel, in der richtigen Abfrage ist noch eine zusätzliche Bedingung. Aber dann klappt das ja leider nicht mit dem sort=- (s.o.). Ich hab's aber an den wenigen Stellen, wo nur eine Bedingung ist geändert und es hat schon ein bisschen was gebracht.
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 17.Januar.2002, 14:18.
Re: Wie hole ich nur die ersten 100 Datensätze
Antworten
Beitrag von Olaf Mertgen (263 Beiträge) am Donnerstag, 17.Januar.2002, 21:18. WWW: www.shareware4u.de
Re: Wie hole ich nur die ersten 100 Datensätze
Den kenn ich noch gar nicht, aber da könnte man auch selber drauf kommen. Ich werd mal schauen, wo das geht. Thx.
Antworten