Ograniczając liczbę wierszy zwracanych przez zapytanie SQL, zwykle używaną w stronicowaniu, istnieją dwie metody określania łącznej liczby rekordów:
Metoda 1
Uwzględnij SQL_CALC_FOUND_ROWSopcję w oryginale SELECT, a następnie uzyskaj łączną liczbę wierszy, uruchamiając SELECT FOUND_ROWS():
SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE id > 100 LIMIT 10;
SELECT FOUND_ROWS();
Metoda 2
Uruchom zapytanie normalnie, a następnie uzyskaj łączną liczbę wierszy, uruchamiając SELECT COUNT(*)
SELECT * FROM table WHERE id > 100 LIMIT 10;
SELECT COUNT(*) FROM table WHERE id > 100;
Która metoda jest najlepsza / najszybsza?
SQL_CALC_FOUND_ROWSzajęło ponad 20 sekund; użycie osobnegoCOUNT(*)zapytania zajęło mniej niż 5 sekund (w przypadku zapytań licznik + wyniki).