Quando si limita il numero di righe che devono essere restituite da una query SQL, generalmente utilizzate nel paging, esistono due metodi per determinare il numero totale di record:
Metodo 1
Includi l' SQL_CALC_FOUND_ROWS
opzione nell'originale SELECT
, quindi ottieni il numero totale di righe eseguendo SELECT FOUND_ROWS()
:
SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE id > 100 LIMIT 10;
SELECT FOUND_ROWS();
Metodo 2
Eseguire la query normalmente e quindi ottenere il numero totale di righe eseguendo SELECT COUNT(*)
SELECT * FROM table WHERE id > 100 LIMIT 10;
SELECT COUNT(*) FROM table WHERE id > 100;
Qual è il metodo migliore / più veloce?
SQL_CALC_FOUND_ROWS
durata di oltre 20 secondi; l'utilizzo di unaCOUNT(*)
query separata ha richiesto meno di 5 secondi (per entrambe le query count + results).