Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/08/2008, 10:51
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 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)