SELECT COUNT () vs mysql_num_rows ();

Tengo una mesa grande (60+) millones de registros.

Estoy usando un script PHP para navegar a través de esta tabla.

El script PHP (con paginación) se carga muy rápido porque:

El motor de mesa es InnoDB por lo tanto.SELECT COUNT() es muy lento ymysql_num_rows() no es una opción, así que mantengo el recuento total de filas (el número que uso para generar paginación) en una tabla separada (actualizo este registrototal_rows=total_rows-1 ytotal_rows=total_rows1+1 duranteDELETE yINSERT).

Pero la pregunta es ¿qué hacer con la paginación para los resultados de búsqueda?

Ahora mismo estoy haciendo esto con 2 pasos:

1.

$condition = " fname='rinchik' ";
$result = "SELECT * FROM my_large_table WHERE" . $condition;

Aquí tengo todos los resultados de búsqueda de la base de datos.

2. Ahora necesito contar estos resultados para crear la paginación. Estoy haciendo esto:

$condition; <- we already have this from the step 1
$result_count = "SELECT COUNT(id) FROM my_large_table WHERE" . $condition;

Y es un poco lento.

¿Sería mejor si lo hiciera de esta manera (con un solo paso) ?:

$condition = " fname='rinchik' ";
$result = "SELECT * FROM my_large_table WHERE" . $condition;
$result_count = mysql_num_rows($result);

Respuestas a la pregunta(3)

Su respuesta a la pregunta