From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Marcos Saldivar <baron(dot)rojo(dot)cuerdas(dot)de(dot)acero(at)gmail(dot)com> |
Cc: | Sebastián Villalba <sebastian(at)fcm(dot)unc(dot)edu(dot)ar>, Postgresql <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Plan de ejecución de una consulta con OR |
Date: | 2008-07-14 15:47:23 |
Message-ID: | 20080714154723.GE4050@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Marcos Saldivar escribió:
> Entonces lo mas adecuado es no confiar a menos que las subconsultas
> cumplan con condiciones
> de como que no incluyeran un función volátil ???
Hmm ...
> por ejemplo:
>
> db=> create table bar(id bigserial primary key);
> db=> create table foo(id bigserial primary key);
> db=> insert into foo select generate_series(1, 20);
> db=> insert into bar select generate_series(10, 50);
Tus tablas de ejemplo son muy chicas para mi gusto ... con unas 10000
tuplas en cada una sería más creíble y empezaría a usar indexscans donde
fuera apropiado (obviamente además debes crear los índices)
> db=> explain analyze select * from foo where true or 100 in (select id
> from bar);
Esto es muy diferente de tu pregunta porque el "true" es una constante
al tiempo de crear el plan.
> Lo que pretendo hacer es que la consulta en ultimo caso o en el caso
> mas complejo ejecute varias subconsultas. osea
> si el registro tiene un campo permiso = 't' de todos no tiene caso
> verificar permisos ya que todos tienen acceso, pero en caso de que el
> campo sea distinto de 't' si hay que verificar permisos y ahi entra el
> or osea, si permiso <> 't' hacer subconsulta...
Creo que debe haber maneras mejores de expresar esta consulta ...
probablemente un JOIN. Cualquier cosa que involucre un indexscan y que
te libere del SubPlan debería salir mejor.
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From | Date | Subject | |
---|---|---|---|
Next Message | Marcelo Retamal Vallejos | 2008-07-14 17:11:43 | Campo Multivalorado, secuencial |
Previous Message | Marcos Saldivar | 2008-07-14 15:27:55 | Re: Plan de ejecución de una consulta con OR |