Eso depende de cada motor, aunque se sostiene en general lo que puse en el link. Basicamente:
SELECT COUNT(*)
Es un alias a SELECT Count(Tabla)
SELECT COUNT(UNA CONSTANTE)
Cuenta sobre EL RESULTSET.
SELECT COUNT(UnCampo)
Cuenta sobre EL CAMPO
El link de
http://www.postgresqltutorial.com/po...ount-function/ esplica los PROS y CONTRAS.
Es importante entender esto, porque COUNT es una función de agregado, y dependiendo de que se le este metiendo a esa función PUEDE OPERAR DE FORMA DIFERENTE, así como SUM, AVG y demás operan diferente dependiendo de que le metas.
Cuando se hace COUNT(1) es un "truco" que se aplica erroneamente:
http://stackoverflow.com/questions/1...ount-vs-count1
A proposito, en términos generales COUNT tiende a ser ineficiente, y de forma diferentes en cada motor. PostgresSql sufre mucho en este aspecto.
Es por eso que la respuesta mejor a
"como puedo hacer pasa conocer cuantos registros obtengo en un select en un stored procedure"
NO ES repetir la consulta de nuevo con un COUNT!
Es preguntarle al cursor cuantos resultados ya tiene (ej: user .recordcount).
Count se debe usar como una funcion de agregado. Yo no vuelvo a sumar una columna que ya sume. Yo no vuelvo a contar la tabla que ya tengo en mi cursor.