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);