Siempre que se programa un sistema de contenidos con paginación, como pueden ser los comentarios de una noticia, o mostrar los post de un blog se suele programar con dos queries:
- Una query que recupera los datos de la base de datos, como url, título y entradilla y que usa la restricción LIMIT para no recuperar todos los datos de la base de datos
- Una query con un count para mostrar el total de elementos de la paginación
- SQL_CALC_FOUND_ROWS: Calcula el número de resultados de una consulta sin LIMIT.
- FOUND_ROWS: Obtiene el resultado del último SQL_CALC_FOUND_ROWS ejecutados.
$sql = 'select SQL_CALC_FOUND_ROW id, titulo, contenido from articulos where publicado = 1 LIMIT 5,5';
$sqlCount = 'select FOUND_ROWS() as total ';
Estas dos funciones tienen un menor impacto sobre la base de datos haciendo mucho más rápida la consulta de obtener el número de registros.
NOTA: En fichero php.ini el valor mysql.trace_mode debe estar en Off. Esta opción es el Modo de rastreo y cuando mysql.trace_mode está habilitada, los warnings para exploraciones de tablas/índices, o conjuntos de resultados no libres y errores de SQL serán mostrados.