Tworzenie oddzielnego zapytania nie jest dobrym rozwiązaniem (moim zdaniem), ponieważ serwer dwukrotnie przeszuka wiersze dla jednego zestawu wyników.
Aby zapobiec "podwójnemu" zapytaniu, MySQL posiada funkcję FOUND_ROWS(), zwraca liczbę wierszy znalezionych dla bieżących warunków z WHERE
klauzula. Jest to bardzo przydatne, gdy w zapytaniu używasz LIMIT i OFFSET. Uważam, że użycie tej funkcji jest lepszym rozwiązaniem.http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows
Czytałem jakiś czas temu, że JDBC przesyła wiersze z serwera, ale nie była to oficjalna dokumentacja i nie mogę powiedzieć, jak to działa w chwili obecnej, ale zapytania mogą być różne - z trudnymi podzapytaniami i złączeniami. Myślę, że serwer może zakończyć wszystkie zasoby, jeśli „prześle strumieniowo” te wiersze tylko wtedy, gdy klient o to poprosi.