il mio blog personale: foto, video…


Sto caricando i dati ...
Failed to load data!

164 Num Rows nelle query con LIMIT

inserito da ligio il 17 Gennaio 2008 alle 10:14
nella categoria informatica, sezione

Parliamo di MySQL: quando si esegue una query con la clausola LIMIT, come faccio a sapere il numero totale di righe restituite dalla stessa query, ma senza limit? Questa funzionalità può essere utile ad esempio in una pagina web che deve mostrare N risultati, ma necessita anche di conoscere il numero totale di risultati!

Ebbene, in molti dichiarano che basta richiamare la query “SELECT FOUND_ROWS()” dopo una select che deve indicare la clausola SQL_CALC_FOUND_ROWS in questo modo:


mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
-> WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();

Ed ecco fatto! Nell’esempio precedente, FOUND_ROWS() ritorna esattamente lo stesso numero di una query tipo “SELECT COUNT(*) FROM tbl_name WHERE id > 100″… ma senza il “LIMIT 10″!

C’è però una considerazione da fare: una query con istruzione SQL_CALC_FOUND_ROWS è spesso più lenta di una semplice select con clausola limit. Molto spesso è quindi meglio eseguire 2 query diverse… una SELECT con clausola LIMIT e una con COUNT(*).

Un test dettagliato è visionabile a questo indirizzo su mysqlperformanceblog