Ich habe eine Datenbankabfrage, die zu einer großen Ergebnismenge führen kann. Der Client, der die Daten anzeigt, empfängt die Daten über das Netzwerk. Daher bestand die Idee darin, die Menge der übertragenen Daten zu minimieren, indem nur die ersten 50 Ergebnisse aus der Datenbank abgerufen und an den Client gesendet wurden. Dann biete ich die Möglichkeit, zur zweiten Seite zu springen, um die nächsten 50 Ergebnisse usw. abzurufen (etwas Ähnliches, was z. B. Google anbietet).
Die Frage ist, wie Paging effektiv implementiert werden kann. Ich möchte sicherstellen, dass mssql so oft wie möglich den Cache verwendet und dass dieser nicht jedes Mal erneut ausgeführt wird, wenn ich das Paging ändere.
Es gibt mehr Clients, die gleichzeitig die Datenbank abfragen. Verwendete SQL-Engine: MS SQL 2005
Meine Ideen waren:
- Verwenden Sie vorbereitete SQL-Anweisungen, um die gemeinsame Nutzung des Ausführungsplans sicherzustellen
- Verwenden Sie die Variable ROW_COUNT, um nur die erforderlichen Zeilen abzurufen
Aber ist es wirklich der effektivste Weg? Oder denken Sie, dass es besser wäre, die gesamte Ergebnismenge abzurufen und Paging in den Code zu implementieren, der die Daten an den Client sendet?
Vielen Dank für Ihre Tipps!
Grüße, Tomas
quelle
Das hängt von Ihrer Umgebung ab. Ich würde einen Test mit beiden Methoden einrichten und herausfinden, welche für Sie am besten geeignet ist. Persönlich würde ich auf dem Server pagen. Je weniger Daten über das Kabel und weniger Daten im RAM des Clients, desto besser. Wenn Sie die Clientcomputerspezifikationen steuern können, der gesamte Datenverkehr über ein nicht gesättigtes LAN erfolgt und Clients immer schnell durch mehrere Seiten blättern, möchten Sie möglicherweise auf dem Client blättern.
quelle