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