Ver Mensaje Individual
  #21  
Antiguo 16-11-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.940
Reputación: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
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.
__________________
El malabarista.
Responder Con Cita