Skip site navigation (1) Skip section navigation (2)

Re: implementacion de last() en el driver JDBC de postgresql

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Arturo Munive <arturomunive(at)gmail(dot)com>
Cc: Postgresql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: implementacion de last() en el driver JDBC de postgresql
Date: 2007-05-31 18:42:42
Message-ID: 20070531184242.GD18911@alvh.no-ip.org (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Arturo Munive escribió:
> Hola a todos:
> En el proyecto en que trabajo (en java) estamos  creando componentes
> personalizados para acceder a la base de datos.
> 
> Un dato muy importante para esto es la cantidad de registros que 
> devuelve una consulta.

Eso es lento, porque tiene que ejecutar la consulta en su totalidad para
poder contarlos.  Si la consulta es costosa de ejecutar, o si retorna
200000 de registros y solo quieres los primeros 10 o 20, entonces vas a
pagar todo el costo de ejecucion solo para obtener un numero que en
realidad no sirve de nada.

Hacer un "select count(...) from ..." es igual de costoso (con la
diferencia que lo hace Postgres internamente, pero igual tiene que
ejecutar la consulta completa).

Para evitarse pagar costos innecesarios, hay varias ideas:

1. si necesitas cantidades muy exactas, almacena las cuentas en una
tabla aparte que mantienes con triggers (no de la manera trivial porque
sufriria mucha contencion en los UPDATEs)

2. si te sirven valores aproximados, puedes preguntarle al planner
cuantos registros cree que devolvera la consulta (como Google, que dice
"1-10 de aprox. 1000000", pero ellos nunca entregan resultados mas alla
de los primeros 1000)

-- 
Alvaro Herrera                  http://www.amazon.com/gp/registry/5ZYLFMCVHXC
"Just treat us the way you want to be treated + some extra allowance
 for ignorance."                                    (Michael Brusser)

In response to

Responses

pgsql-es-ayuda by date

Next:From: Alvaro HerreraDate: 2007-05-31 18:45:29
Subject: Re: Trigger no se ejecuta al cambiar datos en una tupla cuando hay datos en determinada columna
Previous:From: Arturo MuniveDate: 2007-05-31 17:52:27
Subject: implementacion de last() en el driver JDBC de postgresql

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group