php - tiene - numero total de registros mysql
¿Cuál es la mejor manera de obtener un#total de registros en una tabla mysql con php? (10)
¿Cuál es la forma más eficiente de seleccionar el número total de registros de una tabla grande? Actualmente, estoy simplemente haciendo
$result = mysql_query("SELECT id FROM table");
$total = mysql_num_rows($result)
Me dijeron que esto no era muy eficiente o rápido, si tienes muchos registros en la mesa.
De acuerdo con la documentación de MySQL, esto es más eficiente si está utilizando una tabla MyISAM (que es el tipo más común de tablas utilizadas):
$result = mysql_query("SELECT COUNT(*) FROM table");
De lo contrario, debe hacer lo que dijo Wayne y asegurarse de que la columna contada esté indexada.
Las tablas MyISAM ya almacenan el conteo de filas
SELECT COUNT(*) FROM table
en una tabla MyISAM simplemente lee ese valor. No escanea la tabla o el índice (es). Por lo tanto, es tan rápido o más rápido que leer el valor de una tabla diferente.
¿Puedo agregar, que la forma más "eficiente" de obtener el número total de registros, particularmente en una tabla grande, es guardar la cantidad total como un número en otra tabla? De esta forma, no tiene que consultar toda la tabla cada vez que quiera obtener el total.
Sin embargo, tendrá que configurar algún código o Triggers en la base de datos para aumentar o disminuir ese número cuando se agrega / elimina una fila.
Por lo tanto, no es la forma más fácil, pero si su sitio web crece, definitivamente debería considerar hacerlo.
¿Qué tal algo así?
$result = mysql_query("SELECT COUNT(id) AS total_things from table");
$row = mysql_fetch_array($result,MYSQL_ASSOC);
$num_results = $row["total_things"];
Debe usar la función COUNT integrada de SQL :
$result = mysql_query("SELECT COUNT(id) FROM table");
Te dijeron correctamente. mysql puede hacer esto por ti, que es mucho más eficiente.
$result = mysql_query( "select count(id) as num_rows from table" );
$row = mysql_fetch_object( $result );
$total = $row->num_rows;
Solo quería señalar que SHOW TABLE STATUS
devuelve una columna Rows
, aunque no puedo hablar de su eficacia. Algunos Google ligeros dan vuelta informes de la lentitud en MySQL 4 hace más de dos años. Podría hacer pruebas contrarreloj interesantes.
También tenga en cuenta la advertencia de InnoDB con respecto a conteos inexactos.
Aunque acepto utilizar las funciones incorporadas, realmente no veo ninguna diferencia de rendimiento entre mysql_num_rows y count (id). Para 25000 resultados, el mismo rendimiento (puede decir exacto.) Solo para el registro.
Use la función agregada. Pruebe el siguiente comando SQL
$num= mysql_query("SELECT COUNT(id) FROM $table");
mysqli_query () está en desuso. Mejor usa esto:
$result = $dbh->query("SELECT id FROM {table_name}");
$total = $result->num_rows;
Usando PDO:
$result = $dbh->query("SELECT id FROM {table_name}");
$total = $result->rowCount();
(donde ''$ dbh'' = manejador del db conectado a)