Re: duda en COUNT(*) o COUNT(campo_entidad)???

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Marco Antonio Frias Butrón <marcoantoniofrias(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: duda en COUNT(*) o COUNT(campo_entidad)???
Date: 2007-08-13 16:24:51
Message-ID: 20070813162451.GB4315@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Marco Antonio Frias Butrón escribió:
> hola, tengo la duda al hacer un conteo de cuantos registros cumplen
> una cierta condición, cuando se hace select count(*) o select
> count(campo_entidad) cual de estas es más eficiente... si la segunda
> es la mejor hacer el conteo por el campo que tiene PK es más
> óptimo???... yo he estado utilizando count(id_entidad) donde este
> id_entidad es la llave primaria...

Es casi lo mismo en terminos de rendimiento, pero asegurate que entiendes la
diferencia cuando hay nulos en el campo que estas contando:

alvherre=# create table cuenta (a int);
CREATE TABLE
alvherre=# insert into cuenta values (1), (2), (3), (null);
INSERT 0 4
alvherre=# select count(*), count(a) from cuenta;
count | count
-------+-------
4 | 3
(1 row)

Si es el PK no deberia haber ninguna diferencia medible, pero para
contar un campo se debe chequear si es nulo o no, mientras que cuando
cuentas una constante (por ej. el *) ese chequeo no se hace.

Ahora, si haces consultas del estilo

select count(*) from table;

muy a menudo, preparate para re-pensar tu diseño cuando las tablas
crezcan mucho, porque ese tipo de consultas necesita recorrer la tabla
completa ==> lento.

(Esto no pasa cuando tienes un WHERE que se pueda satisfacer con un
indice).

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Espartano 2007-08-13 16:25:10 Re: OBTENER FECHA DEL servidor PostgreSQL.
Previous Message Mario Gonzalez 2007-08-13 16:16:16 Re: OBTENER FECHA DEL servidor PostgreSQL.