2009-06-19 29 views
7

Puede alguien decirme que es lo mejor appraoch en MySQL whin se trata de encontrar el número de filas de una tabla: es mejor hacer¿Recuento de filas para una tabla en MySQL?

SELECT COUNT(*) FROM TABLE_NAME 

o que busque el número de filas en la tabla TABLE en el INFORMATION_SCHEMA?

¿Esta sería una operación frecuente para calcular los recuentos de paginación para las páginas?

Debo añadir que las tablas solo tendrán unos pocos miles de filas como máximo.

Gracias

Martin O'Shea.

+0

Para unos pocos miles de filas, seleccionar conteo (*) funcionará casi instantáneamente. – Hardwareguy

Respuesta

18

En MyISAM, esta consulta:

SELECT COUNT(*) 
FROM TABLE_NAME 

es inmediata, ya que se mantiene en los metadatos de tabla, por lo que es casi libre de emitir esta consulta y siempre obtendrá el resultado correcto.

En InnoDB, esta consulta contará las filas una a una, lo que podría llevar algún tiempo.

Si no necesita el valor exacto de COUNT(*), puede consultar INFORMATION_SCHEMA.

+1

Creo que dado que necesito calcular la paginación usando el recuento de filas/recuento de paginación, en las tablas de InnoDB la mejor manera es usar INFORMATION_SCHEMA. El conteo solo tomaría milisegundos, pero eso sigue siendo una sobrecarga si varios usuarios acceden a la misma tabla para navegar. –

+0

@MartinOShea: exactamente – Quassnoi

+0

Gracias por su ayuda. –

1

También consideraría usar SQL_CALC_FOUND_ROWS y SELECT FOUND_ROWS() si encuentra que COUNT(*) es demasiado lento.

Cuestiones relacionadas