SELECT COUNT () vs mysql_num_rows ();
Eu tenho uma tabela grande (60+) milhões de registros.
Estou usando o script PHP para navegar por essa tabela.
O script PHP (com paginação) carrega muito rápido porque:
O mecanismo de tabela é o InnoDB,SELECT COUNT()
é muito lento emysql_num_rows()
não é uma opção, então eu mantenho a contagem total de linhas (o número que eu uso para gerar paginação) em uma tabela separada (eu atualizo este registrototal_rows=total_rows-1
etotal_rows=total_rows1+1
duranteDELETE
eINSERT
).
Mas a questão é o que fazer com a paginação nos resultados da pesquisa?
Agora eu estou fazendo isso com 2 etapas:
1
$condition = " fname='rinchik' ";
$result = "SELECT * FROM my_large_table WHERE" . $condition;
Aqui eu tenho todos os resultados de pesquisa do DataBase.
2. Agora eu preciso contar esses resultados para criar paginação. Eu estou fazendo isto:
$condition; <- we already have this from the step 1
$result_count = "SELECT COUNT(id) FROM my_large_table WHERE" . $condition;
E é meio lento.
Seria melhor se eu fizesse assim (com apenas um passo) ?:
$condition = " fname='rinchik' ";
$result = "SELECT * FROM my_large_table WHERE" . $condition;
$result_count = mysql_num_rows($result);