sql >> Base de Datos >  >> RDS >> Mysql

¿Obtener el número total de filas al usar LIMIT?

Afortunadamente, desde MySQL 4.0.0 puedes usar SQL_CALC_FOUND_ROWS opción en su consulta que le indicará a MySQL que cuente el número total de filas sin tener en cuenta LIMIT cláusula. Todavía necesita ejecutar una segunda consulta para recuperar el recuento de filas, pero es una consulta simple y no tan compleja como la consulta que recuperó los datos. El uso es bastante simple. En su consulta principal, debe agregar SQL_CALC_FOUND_ROWS opción justo después de SELECT y en la segunda consulta necesita usar FOUND_ROWS() función para obtener el número total de filas. Las consultas se verían así:

SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;

SELECT FOUND_ROWS();

La única limitación es que debe llamar a la segunda consulta inmediatamente después de la primera porque SQL_CALC_FOUND_ROWS no guarda el número de filas en ninguna parte. Aunque esta solución también requiere dos consultas, es mucho más rápida, ya que ejecuta la consulta principal solo una vez. Puede leer más sobre SQL_CALC_FOUND_ROWS y FOUND_ROWS() en documentos de MySQL.

EDITAR: Debe tener en cuenta que, en la mayoría de los casos, ejecutar la consulta dos veces es más rápido que SQL_CALC_FOUND_ROWS . consulte aquí

EDITAR 2019:

El modificador de consulta SQL_CALC_FOUND_ROWS y la función FOUND_ROWS() que lo acompaña están en desuso a partir de MySQL 8.0.17 y se eliminarán en una versión futura de MySQL.

https://dev.mysql.com /doc/refman/8.0/en/information-functions.html#function_found-rows

Se recomienda usar COUNT en cambio

SELECT * FROM tbl_name WHERE id > 100 LIMIT 10;
SELECT COUNT(*) WHERE id > 100;