Forma correcte de paginar resultats amb MySQL
El 27/10/2010 a les 23:38
Encara fas les paginacions amb COUNT(*), MySQL té una forma més eficient i simple per paginar els resultats utilitzant SELECT FOUND_ROWS()
De vegades un veu la llum i se li acudeix de fer una cosa que no s'havia parat mai a pensar o a qüestionar.
Això és el que m'ha passat a mi. Mai se m'havia acudit que hi podia haver una manera més eficient de fer un a paginació que el COUNT.
En realitat sempre he sabut que hi havia d'haver una manera millor, però mai ho havia buscat. Després de fer-ho no vull ni mirar els disbarats que he fet en pàgines antigues.
El mètode antic i ineficient consta bàsicament de 2 consultes, la primera per contar tots els camps de la taula, i la segona fent ús del LIMIT per paginar els resultats
SELECT COUNT(*) AS total FROM usuaris
SELECT * FROM usuaris LIMIT 0,10
De vegades si tenim varis JOIN, GROUP BY... la consulta es complica molt i és realment complicat i ineficient haver de realitzar la consulta 2 vegades per contar els resultats.
La solució és aquesta:
SELECT SQL_CALC_FOUND_ROWS * FROM usuaris LIMIT 0,10
SELECT FOUND_ROWS()
La primera línia executa la consulta amb el limit desitjat, la segona retorna el número de registres de la consulta sense el límit. Res mes.
Font:
http://quenerapu.com/mysql/me-encanta-select-found_rows/
T'ha set d'utilitat l'article? vols simplent afegir-hi alguna cosa?
Siusplau comenta-ho...