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
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. |