Introducción
Estuve haciendo algunas pruebas con MySQL y la función FOUND_ROWS. Tuve algunos inconvenientes porque a veces sale la sorpresa de que FOUND_ROWS de MySQL devuelve 0 o 1 filas, o resultados inesperados. Vamos a ver cómo solucionarlo.
Solución al error de que FOUND_ROWS de MySQL devuelve 0 filas
Reiniciar servicio
Suena como la solución de todos los informáticos pero es la verdad. Hay que reiniciar el demonio de MySQL. Si estamos en Windows vamos a Servicios, buscamos mysql, doble click; en la ventana que se abre hacemos click en Detener, esperamos, y luego hacemos click en Iniciar.
En Linux Ubuntu y tal vez algunos derivados me parece que es con el comando:
sudo service mysql restart
Con eso debería ser suficiente. Si sigue sin solucionarse hay que seguir leyendo…
Índices
No sé por qué pero debe haber una razón muy buena, y es que FOUND_ROWS devolverá 1 en caso de que nuestra tabla tenga un índice y se esté usando dicho índice al hacer la consulta.
Posible alternativa
Como sabemos, FOUND_ROWS cuenta las filas que habría si no limitásemos con LIMIT. Lo que podemos hacer es hacer la consulta por separado implementando un COUNT(*). Tal vez no es lo mejor en cuanto a rendimiento pero es una solución que funciona perfectamente.