mental.dIseASe
Lieutenant
- Registriert
- Dez. 2008
- Beiträge
- 669
Hallo zusammen,
ich habe hier gerade einen Paging-Mechanismus vor mir, der mir die Ergebnismenge einer Abfrage einschränkt und die resultierenden Zeilen ausspuckt. Er wird konfiguriert über die zwei Parameter PageNumber und PageSize:
Sei eine Abfrage mit 15 Zeilen Ergebnis gegeben, dann liefern folgende Konfigurationen von PageNumber und PageSize die angegebenen Zeilen zurück:
Beispiel:
PageNumber == 1, PageSize == 1 -> Zeile 1
PageNumber == 1, PageSize == 5 -> Zeilen 1 bis 5
PageNumber == 2, PageSize == 5 -> Zeilen 6 bis 10
PageNumber == 2, PageSize == 10 -> Zeilen 11 bis 15
PageNumber == 2, PageSize == 15 -> (leer)
Ein Offset ist NICHT konfigurierbar.
Angenommen, ich möchte eine bestimmte Anzahl hintereinander stehender Zeilen haben und kenne deren Indizes. Gibt es dann eine Möglichkeit, aus diesen Indizes PageNumber und PageSize so zu berechnen, dass
a) alle Zeilen in einer Page (also in einem Rutsch) ausgelesen werden
und
b) möglichst wenige Zeilen auf der Ergebnis-Page sind, die nicht zum Ergebnis gehören
Angenommen, ich wollte also die Zeilen 12 bis 15 haben, 4 Zeilen, dann wäre das optimale Parameterpaar zum Auslesen wohl (PageNumber == 3, PageSize == 5). Dies würde die Zeilen 11-15 ausspucken, mit Zeile 11 also nur eine Zeile Ausschuss. Unoptimal im Sinne der Fragestellung wäre zum Beispiel das Parameterpaar (PageNumber == 2, PageSize == 8), weil es zwar alle gesuchten Zeilen ausliest, aber mit 4 unnötigen Zeilen auch unnötig viel Auschuss produziert.
Da meine Mathe-Vorlesung schon ein paar Jahre her ist und mein Gehirn gerade Matsch ist, wende ich mich mit dieser Frage an euch. Vielleicht reicht auch schon ein kraftvoller Schubser in die richtige, mathematische Ecke. Programmatischer Hintergrund ist, dass ich für eine Auswahlliste bestimmte Elemente nachladen will, ohne die Liste komplett neuzuladen.
ich habe hier gerade einen Paging-Mechanismus vor mir, der mir die Ergebnismenge einer Abfrage einschränkt und die resultierenden Zeilen ausspuckt. Er wird konfiguriert über die zwei Parameter PageNumber und PageSize:
Sei eine Abfrage mit 15 Zeilen Ergebnis gegeben, dann liefern folgende Konfigurationen von PageNumber und PageSize die angegebenen Zeilen zurück:
Beispiel:
PageNumber == 1, PageSize == 1 -> Zeile 1
PageNumber == 1, PageSize == 5 -> Zeilen 1 bis 5
PageNumber == 2, PageSize == 5 -> Zeilen 6 bis 10
PageNumber == 2, PageSize == 10 -> Zeilen 11 bis 15
PageNumber == 2, PageSize == 15 -> (leer)
Ein Offset ist NICHT konfigurierbar.
Angenommen, ich möchte eine bestimmte Anzahl hintereinander stehender Zeilen haben und kenne deren Indizes. Gibt es dann eine Möglichkeit, aus diesen Indizes PageNumber und PageSize so zu berechnen, dass
a) alle Zeilen in einer Page (also in einem Rutsch) ausgelesen werden
und
b) möglichst wenige Zeilen auf der Ergebnis-Page sind, die nicht zum Ergebnis gehören
Angenommen, ich wollte also die Zeilen 12 bis 15 haben, 4 Zeilen, dann wäre das optimale Parameterpaar zum Auslesen wohl (PageNumber == 3, PageSize == 5). Dies würde die Zeilen 11-15 ausspucken, mit Zeile 11 also nur eine Zeile Ausschuss. Unoptimal im Sinne der Fragestellung wäre zum Beispiel das Parameterpaar (PageNumber == 2, PageSize == 8), weil es zwar alle gesuchten Zeilen ausliest, aber mit 4 unnötigen Zeilen auch unnötig viel Auschuss produziert.
Da meine Mathe-Vorlesung schon ein paar Jahre her ist und mein Gehirn gerade Matsch ist, wende ich mich mit dieser Frage an euch. Vielleicht reicht auch schon ein kraftvoller Schubser in die richtige, mathematische Ecke. Programmatischer Hintergrund ist, dass ich für eine Auswahlliste bestimmte Elemente nachladen will, ohne die Liste komplett neuzuladen.