Ich möchte das Blättern in einem Gridview oder in einer html-Tabelle implementieren, die ich mit Ajax füllen werde. Wie sollte ich Abfragen schreiben, um das Blättern zu unterstützen? Wenn zum Beispiel die Seitengröße 20 ist und der Benutzer auf Seite 3 klickt, müssen die Zeilen zwischen 41 und 60 in der Tabelle angezeigt werden. Zunächst kann ich alle Datensätze abrufen und in den Cache stellen, aber ich denke, das ist der falsche Weg. Denn die Daten können sehr groß sein und die Daten können sich in anderen Sitzungen ändern. Wie kann ich das also implementieren? Gibt es eine generische Methode (für alle Datenbanken)?
Antworten
Zu viele Anzeigen?Wenn der erwartete Datensatz sehr groß ist, würde ich empfehlen, eine temporäre Tabelle, einen View oder einen Snapshot (materialisierte Ansicht) zu erstellen, um die Abfrageergebnisse + eine Zeilennummer zu speichern, die entweder mit der analytischen Funktion ROWNUM oder ROW_NUMBER abgerufen wird. Danach können Sie diesen temporären Speicher einfach mit Zeilennummernbereichen abfragen. Grundsätzlich müssen Sie den eigentlichen Datenabruf vom Paging trennen.
Es gibt keine einheitliche Methode, um das Paging über verschiedene RDBMS-Produkte hinweg zu gewährleisten. Oracle bietet Ihnen rownum, das Sie in der where-Klausel verwenden können:
where rownum < 1000
SQL Server bietet die Funktion row_id( ), die ähnlich wie die Funktion rownum von Oracle verwendet werden kann. Allerdings ist die Funktion row_id( ) vor SQL Server 2005 nicht verfügbar.
- See previous answers
- Weitere Antworten anzeigen