Frage

Es ist eines dieser Dinge, die eine seltsame Kurve zu haben scheinen, bei der es umso mehr Sinn ergibt, je mehr ich darüber nachdenke.Bis zu einem gewissen Grad natürlich.Und dann ergibt es für mich überhaupt keinen Sinn.

Möchtest du mich aufklären?

War es hilfreich?

Lösung

Denn in den meisten Fällen müssen Sie Ihre Ergebnisse zuerst sortieren.Wenn Sie beispielsweise bei Google suchen, Sie können nur bis zu 100 Ergebnisseiten anzeigen.Sie kümmern sich nicht um die Sortierung nach Page-Rank über 1000 Websites für ein bestimmtes Schlüsselwort (oder eine Kombination von Schlüsselwörtern).

Die Paginierung ist schnell.Das Sortieren ist langsam.

Andere Tipps

Lubos Das ist richtig, das Problem ist nicht die Tatsache, dass Sie paginieren (wodurch eine RIESIGE Datenmenge von der Leitung abgezogen wird), sondern dass Sie herausfinden müssen, was tatsächlich auf der Seite vor sich geht.

Die Tatsache, dass Sie eine Seite erstellen müssen, bedeutet, dass viele Daten vorhanden sind.Das Sortieren vieler Daten dauert lange :)

Das ist eine wirklich vage Frage.Um eine bessere Vorstellung von der Problematik zu bekommen, bräuchten wir ein konkretes Beispiel.

Diese Frage scheint ziemlich gut beantwortet zu sein, aber ich füge noch etwas MySQL-spezifisches hinzu, da es viele Leute anspricht:

Vermeide das Benutzen SQL_CALC_FOUND_ROWS.Sofern der Datensatz nicht trivial ist, geht das Zählen von Übereinstimmungen und das Abrufen der x-Anzahl von Übereinstimmungen in zwei separaten Abfragen viel schneller.(Wenn es Ist trivial, Sie werden in beiden Fällen kaum einen Unterschied bemerken.)

Ich dachte, du meinst es Paginierung der gedruckten Seite - Da habe ich mir die Zähne ausgebissen.Ich wollte einen großartigen Monolog über das Sammeln des gesamten Inhalts für die Seite, die Positionierung (hier gibt es eine große Anzahl von Regeln, Constrait-Engines sind sehr hilfreich) und die Begründung einleiten ...Aber anscheinend haben Sie über den Prozess der Organisation von Informationen auf Webseiten gesprochen.

Dafür würde ich auf Datenbanktreffer tippen.Der Festplattenzugriff ist langsam.Sobald Sie es im Gedächtnis haben, ist das Sortieren günstig.

Natürlich dauert das Sortieren einer zufälligen Abfrage einige Zeit, aber wenn Sie Probleme mit der regelmäßigen Verwendung derselben paginierten Abfrage haben, stimmt entweder etwas mit der Datenbankeinrichtung nicht (falsche Indizierung/überhaupt keine, zu wenig Speicher usw.).Ich bin kein Datenbankmanager) oder Sie machen die Paginierung ernsthaft falsch:

Schrecklich falsch:z.B.tun select * from hugetable where somecondition; in ein Array, um die Seitenanzahl mit der array.length zu ermitteln, die relevanten Indizes auszuwählen und das Array zu verwerfen – und dies dann für jede Seite zu wiederholen ...Das nenne ich ernsthaft falsch.

Die bessere Lösung sind zwei Abfragen:Einer erhält nur die Zählung, ein anderer erhält die Ergebnisse limit Und offset.(Einige proprietäre, nicht standardmäßige SQL-Server verfügen möglicherweise über eine Ein-Abfrage-Option, ich weiß nicht)

Die schlechte Lösung könnte bei kleinen Tabellen tatsächlich ganz gut funktionieren (tatsächlich ist es nicht undenkbar, dass sie bei sehr kleinen Tabellen schneller ist, da der Aufwand für das Durchführen von zwei Abfragen größer ist als für das Abrufen aller Zeilen in einer Abfrage.Ich sage es nicht Ist also...), aber sobald die Datenbank zu wachsen beginnt, werden die Probleme offensichtlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top