Duplicar posibles:
Count(*) vs Count(1)SQL Mejor Práctica: count (1) o el recuento (*)
que anecdóticamente recuerdo que me dijeron:
nunca use count (*) cuando el recuento (1) sea
Recientemente pasé este consejo a otro desarrollador, y tuve el desafío de probar que esto era cierto. Mi argumento fue lo que me dijeron junto con cuando me dieron el consejo: que la base de datos solo devolvería la primera columna, que luego se contabilizaría. El argumento en contra fue que la base de datos no evaluaría nada entre corchetes.
De algunas pruebas (no científicas) en tablas pequeñas, ciertamente no parece haber diferencia. Actualmente no tengo acceso a ninguna tabla grande para experimentar.
Me dieron este consejo cuando estaba usando Sybase, y las tablas tenían cientos de millones de filas. Ahora estoy trabajando con Oracle y considerablemente menos datos.
así que supongo que en resumen, mis dos preguntas son:
- que es más rápido, count (1) o contar (*)?
- ¿Esto varía en diferentes proveedores de bases de datos?
1. ANSI SQL define 'COUNT (*)' debe optimizarse 2. Esto se aplica a la mayoría de RDBMS. Cualquier otra cosa se aplica solo a las versiones anteriores * donde se indica * de lo contrario se supone que COUNT (*) está optimizado. – gbn