¿COUNT(*) o COUNT(1)? La Elección Pragmática para Contar Filas en SQL

¿COUNT(*) o COUNT(1)? La Elección Pragmática para Contar Filas en SQL

Un día, en una charla con amigos técnicos, surgió el tema de contar filas en SQL, y alguien mencionó el uso de COUNT(*) y COUNT(1). Todos teníamos opiniones distintas, pero la conclusión fue curiosamente simple. Al final, nos dimos cuenta de que, aunque ambos métodos hacen el trabajo, la mayoría prefería COUNT(*) por su claridad y porque cualquiera que lo viera, sabría de inmediato qué estaba contando. Lo interesante es que, a pesar de las pequeñas diferencias técnicas, la legibilidad terminó siendo lo más importante para todos.

Vamos a hablar de COUNT(*) y COUNT(1) en SQL. Seguro que has visto ambos para contar filas en una tabla, pero ¿cuál es la diferencia y cuál deberías usar?

Qué hacen:

  • COUNT(*): Cuenta todas las filas en una tabla, sin importar nada más. No le importa si hay valores NULL o cualquier otra cosa. Solo quiere saber cuántas filas hay.
  • COUNT(1): También cuenta todas las filas, pero en lugar de contar todas las columnas como lo hace COUNT(*), se enfoca en una constante (1). Es solo una manera diferente de decirle a SQL que cuente las filas, pero no hay diferencia en el resultado.

Lo importante es que ambos métodos cuentan el número de filas, y la preferencia entre uno u otro generalmente se basa en la claridad y la legibilidad del código.

Hablemos de rendimiento: En cuanto a rendimiento, generalmente no hay mucha diferencia entre los dos. Los sistemas de bases de datos modernos son lo suficientemente inteligentes para manejar ambos sin problemas. Algunos dicen que COUNT(1) podría ser un poco más rápido en ciertas bases de datos antiguas porque cuenta un valor constante simple, pero, sinceramente, la diferencia suele ser tan pequeña que no importa mucho.

La legibilidad es importante: El rendimiento es importante, pero la legibilidad también lo es, y tal vez más. Cuando alguien ve COUNT(*), entiende de inmediato que estás contando todas las filas. Es claro y directo. Por otro lado, COUNT(1) podría hacer que algunos se rasquen la cabeza por un momento. Es explícito al contar el valor literal 1, pero no es tan obvio como COUNT(*).

Conclusión: Entonces, ¿cuál deberías usar? Depende principalmente de tu preferencia personal y de los estándares de codificación de tu equipo o proyecto. Ambos hacen el trabajo, pero COUNT(*) es generalmente preferido por su claridad y legibilidad.

Al final del día, elige el que tenga más sentido para ti y tu equipo. Mientras tus consultas SQL sean fáciles de entender y mantener, estás en el camino correcto.