Re: Consulta que me esta complicando bastante

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Gustavo <gustavor(at)intercomgi(dot)net>
Cc: victor benitez <vicben(dot)listas(at)gmail(dot)com>, PostgreEs <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Consulta que me esta complicando bastante
Date: 2007-09-07 22:06:51
Message-ID: 20070907220651.GQ6167@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Gustavo escribió:
> Otra pregunta relacionada:
>
> Victor me paso esta consulta que me funciona bien:
>
> SELECT r.nivel,count(*),(select count(*) from recurso where nivel <=
> r.nivel)
> FROM recurso r group by nivel order by 1;
>
> pero me surge la duda sobre si es mas eficiente hacer la consulta anidada o
> modelar esto sobre una tabla temporal que en teoria evitaria hacer tnatos
> recorridos sobre la tabla recurso) Tengo entendido que select count(*) es
> secuencial.
>
> Rompo tanto con la eficiencia porque esta consulta va a ser un posible
> cuello de botella de mi aplicacion

Mientras no tengas muchos elementos, esa forma funciona bien. Cuando
sean muchos, va a ser [un poco] lento.

Si esta consulta va a ser muy usada y la tabla va a crecer mucho, te
recomiendo encontrar la manera de hacer un "running aggregate".
Puedes medir que tan lento es llenando una tabla de prueba y verificando
cuanto se demora a medida que la tabla crece.

--
Alvaro Herrera http://www.amazon.com/gp/registry/5ZYLFMCVHXC
"Puedes elegir el color de tu auto -- siempre y cuando sea negro."
(Henry Ford)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Miguel Rodríguez Penabad 2007-09-07 23:51:54 Re: instalar crosstab
Previous Message Arturo Munive 2007-09-07 22:06:07 Re: Consulta que me esta complicando bastante