Inicio > Programación, Web > Calcular el número total de filas al usar LIMIT en MySQL

Calcular el número total de filas al usar LIMIT en MySQL


mariadb-vs-mysql

Cuando mostramos listados extensos al usar bases de datos, lo habitual es usar paginación, y para esta, necesitamos saber el número total de elementos del listado.

El método tradicional para esto es repetir la consulta sustituyendo los campos del SELECT por  COUNT() en la segunda consulta:

#A1
SELECT nombre, apellidos, usuario FROM usuarios WHERE edad < 20 LIMIT 10
#A2
SELECT COUNT() FROM usuarios WHERE edad < 20

Sin embargo, si la consulta es bastante compleja (varias tablas con relaciones…) esto conllevará un excesivo consumo de recursos para la base de datos pues tendrá que realizar la consulta dos veces. 

Afortunadamente desde la versión 4 de MySQL disponemos de SQL_CALC_FOUND_ROWS y FOUND_ROWS()  que nos ayudarán a calcular el número de forma “eficiente”:

#B1
SELECT SQL_CALC_FOUND_ROWS nombre, apellidos, usuario FROM usuarios WHERE edad < 20 LIMIT 10
#B2
SELECT FOUND_ROWS()

Estas consultas nos devolverán exactamente lo mismo pero mucho más rápido, aunque A1 será más rápida que B1, pues una vez encuentre 10 elementos parará, B2 será instantánea.

¿Cuándo compensa?

Por lo que he podido encontrar en este artículo solo compensa cuando la consulta es bastante compleja, con varias relaciones y sin índices. En los casos habituales (listar un tabla) es mucho más rápido usar el método A.

Anuncios
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: