ahora, la explicación:
un
SELECT * FROM tabla es lo peor que puedes hacer para obtener el numero de filas en una tabla... y disculpen la expresión, pero sin afán de hacer menos toda aportación: es la verdad...
¿porque?
es muy simple, hacer una selección de todas las columnas (
eso significa el *) es nada óptima si lo único que queremos es el total de registros, creo que eso es sencillo de entender... (:
imaginemos que tienes una tabla con mas de 10 campos (
las he visto, de lo peor... ![Serio](http://static.forosdelweb.com/fdwtheme/images/smilies/molesto.png)
) y que además contiene la cantidad de 3,000,000 de registros....
algo así como en @forosdelweb, imaginando el numero de temas hasta la fecha... y, ¿pero que sucede cuando hacemos un
SELECT *?
no quiero ni pensarlo, ningún foro basado en vBulletin hubiera sobrevivido a tal catastrofe... ¿entonces, como lo hacen?
simple:
Cita:
Iniciado por pateketrueke
SELECT COUNT(*) AS total FROM tabla
así es.... porque
COUNT(*) no selecciona todos los campos, tan solo hace la cuenta de todas las filas... bingo!!
¿porque usar
mysql_num_rows() no sirve?
funciona, eso es cierto... pero no es lo ideal, porque una simple consulta COUNT arroja un solo resultado con el total de filas... ¿justo lo que queriamos o no?
en cambio, si seleccionamos todas las columnas, sin usar COUNT....
mysql_num_rows() devolvería el mismo total de filas!!!
pero que barbaridad... a simple vista todo parecía correcto hasta aquí, pero se hizo presente la verdad tras la verdad... sin darse cuenta, la consulta siempre cargaba en memoría los resultados... si, todos.... ¿pero eso no importa cierto?
haz la prueba, escribe ambas consultas en
phpMyAdmin y analiza los resultados...