Hello,
SQL_CALC_FOUND_ROWS ist dein Stichwort.
Aber teste es dann mal, ob es wirklich schneller ist.
Lies mal die Kommentare hier.
Die Kommentare und auch der Artikel speigeln wider, dass sich wieder mal keiner WIRKLICH Gedanken um dynamische Datenbestände macht.
Setzen wir mal voraus, dass das ganze im Webumfeld auf einer gut besuchten Seite geschieht, und ein Datanbestand abgefragt werden soll, der auch durch Useraktion/-interaktion beeinflusst, also mindestens ergänzt (a), ggf. auch verändert (c) oder reduziert (b) werden kann.
Wenn man nun ein Query baut, müsste man sich also sowieso zuerst entscheiden, ob der User (nach Microsoftsprache) einen Snapshot oder ein Dynaset als Antwort erhalten soll. Denn während sich der User einen Teil der Daten anschaut, fügen andere User schon Datensätze hinzu (a) oder löschen welche (b).
Wenn man nun die Variante (2) des Artikels benutzt, müsste man wissen, ob sich zwischen der Datenabfrage und der Ermittlung der Datenmenge etwas verändert hat und ob sich ziwschen dem ersten Request des Users auf das Interface und dem nächsten ggf. nochmals etwas geändert hat am Datenbestand.
Das Ganze führt dann schlussendlich in einer http/s-Umgebung, in der User WISSEN MÜSSEN, ob es Veränderungen gegeben hat automatisch zur Variante (4), in der man zuerst alle IDs zur Query in der gewünschten Sortierung (also nach Daten) besorgt, und dann erst die passende Datenmenge (Offset/Limit) mit Hilfe der zwischengespeicherten Menge der IDs abfragt. Zusätzlich muss der User dann bei jedem Request über die Menge der hinzugefügten IDs informiert werden. Die gelöschten können einfach in der Detailanzeige mit "Datensatz wurde inzwischen gelöscht" anstelle der Daten berücksichtigt werden.
Noch komplexer wird das Ganze, wenn man nun auch noch Veränderungen in der Sortierung durch zwischenzeitliche Datenveränderungen (c) berücksichtigen muss, zumindest durch geeignete Markierung in der Detailanzeige. Denn sonst würde der Front-End-User nicht verstehen, dass nach siebzehn "Meier" plötzlich ein "Abraham" folgt und es dann aber wieder mit "Meier" weitergeht.
Je mehr die "Webtechnologie" in tägliche Applikationen von Betrieben und Behörden einzug hält, desto mehr muss man sich auch diesen Fragen stellen!
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg