Diferencias entre count(*) count(col)
Algo a tener muy en cuenta es conocer la diferencia entre count(*) y count(col) en consultas a MySQL.
Cuando realizamos un count(*), lo que hacemos es contar filas, si se trata de una tabla MyISAM y no hay un where, es la forma más rápida de obtener el número de registros de una tabla. Si existe un from o un where, es necesario contar el número de resultados.
Diferente es realizar un count(col), ya que cuenta las filas que tienen esa columna distinta de NULL, por lo que siempre habrá que contar todos los resultados.
Siempre me entra la duda entre count(*) y count(1), las "leyendas urbanas" dicen que es preferible el segundo caso ya que en el primero recuperas todos los datos. Yo sinceramente creo que es lo mismo y recuerdo que un consultor de Oracle también me lo dijo en un proyecto.
Relacionados
Feedback (2) » Formulario
1. Artemio Estrella ~ Martes, 18 Mar 2008 | 15:41H:
Muchos piensan que el "select count(*)" se comporta igual que el "select *"; yo también ya había investigado sobre el caso y resulta que la manera eficiente es hacer "count(*)" en lugar de "count(1)"; el primero, según recuerdo, ya está implícito en el código del manejador de base de datos y para el segundo se está realizando una operación aritmética adicional.

