Re: ayuda con select count(*)

From: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
To: Mario Soto <mario_soto(at)venezolanadeavaluos(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: ayuda con select count(*)
Date: 2004-09-02 18:57:19
Message-ID: 20040902185719.GA8660@dcc.uchile.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Mon, Aug 30, 2004 at 07:10:27PM -0400, Mario Soto wrote:
> Debe ser exacto, ya que lo utilizo para formar una subconsulta.... si es
> costo de almacenamiento no me importa si es costo de proceso adicional si.

Si, sería costo de procesamiento. Lo que tenía en mente era que usaras
algún trigger para mantener un contador actualizado de la tabla, en otra
tabla. Lo malo que tiene, además del costo extra de procesamiento, es
que crea un punto de contención si la tabla sufre actualizaciones
concurrentes.

Una idea para solucionar el problema de contención es usar una tabla con
"modificaciones" además de la suma total. Cuando necesitas count(*)
tomas la suma y le sumas o restas lo que se indica en las
modificaciones. Periodicamente llevas las modificaciones a la suma
total; así la cantidad de registros que tienes que leer para calcular
count(*) no es tan grande.

Lamentablemente no puedes tener la cuenta exacta sin ningún costo de
procesamiento adicional. Si el costo de procesamiento te preocupa
mucho, escribe los triggers en C y usa PREPARE, etc.

--
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
Voy a acabar con todos los humanos / con los humanos yo acabaré
voy a acabar con todos / con todos los humanos acabaré (Bender)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Victor Manuel Cabañas García 2004-09-02 20:07:17 A todos los -gurus-
Previous Message Reyes Abraham Orozco Macias 2004-09-02 17:22:37 ERROR: get_typdefault: failed to lookup type 0