Mam zapytanie do bazy danych, które może spowodować duży zestaw wyników. Klient, który wyświetla dane, odbiera dane przez sieć, więc pomysł polegał na zminimalizowaniu ilości przesyłanych danych poprzez pobranie tylko pierwszych 50 wyników z bazy danych i przesłanie ich do klienta. Następnie zapewnię możliwość przejścia do drugiej strony w celu pobrania kolejnych 50 wyników itp. (Coś podobnego, co oferuje np. Google)
Pytanie brzmi, jaki jest skuteczny sposób wdrażania stronicowania. Chcę się upewnić, że mssql używa pamięci podręcznej w jak największym stopniu i że to samo nie jest wykonywane ponownie za każdym razem, gdy zmieniam stronicowanie.
Jest więcej klientów, którzy odpytują bazę danych w tym samym czasie. Używany silnik SQL: MS SQL 2005
Moje pomysły to:
- Użyj przygotowanego statemenst sql, aby zapewnić współdzielenie planu wykonania
- użyj zmiennej ROW_COUNT, aby pobrać tylko potrzebne wiersze
Ale czy to naprawdę najskuteczniejszy sposób? A może uważasz, że lepiej byłoby pobrać cały zestaw wyników i zaimplementować stronicowanie w kodzie, który wysyła dane do klienta?
Dziękuję za twoje wskazówki!
Pozdrawiam, Tomas