Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Select count(*)

Estas en el tema de Select count(*) en el foro de Mysql en Foros del Web. Me gustaria contar los registros de una tabla pero me gustaría saber que forma es mas eficiente...................si SELECT COUNT(*) ó SELECT COUNT(idNoticia) .......... donde idNoticia ...
  #1 (permalink)  
Antiguo 10/08/2008, 04:34
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 6 meses
Puntos: 2
Select count(*)

Me gustaria contar los registros de una tabla pero me gustaría saber que forma es mas eficiente...................si SELECT COUNT(*) ó SELECT COUNT(idNoticia) .......... donde idNoticia es la clave principal de la tabla.

Un saludo
  #2 (permalink)  
Antiguo 10/08/2008, 10:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Select count(*)

En general si la cantidad de registros a contar es relativamente reducida (menos de 2.000.000) el delay de ambas formas es más o menos el mismo. De todos modos, la forma más eficiente no es la de contar las instancias de un campo, por más que sea campo clave, porque estás obligando al motor a verificar un campo y no contando los registros existentes.
MySQL no va a diferenciar el proceso si es un campo clave o no. Va a verificar de todos modos si el campo es NULL antes de contarlo. El hecho que no pueda ser jamás NULL es algo que al algoritmo del conteo no le interesa: la verificación se hará igual.
Esto hace que en una gran cantidad de registros se vaya acumulando un delay que eventualmente puede ser significativo.
Simplificando:
Código:
SELECT COUNT(*) FROM TABLA;
es la forma más eficiente porque el algoritmo se ocupa de contar los registros que existen, y no el estado que los campos tengan.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:59.