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_ROWS
opcję 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_ROWS
zajęło ponad 20 sekund; użycie osobnegoCOUNT(*)
zapytania zajęło mniej niż 5 sekund (w przypadku zapytań licznik + wyniki).