From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Sebastián Villalba <sebastian(at)fcm(dot)unc(dot)edu(dot)ar> |
Cc: | Marcos Saldivar <baron(dot)rojo(dot)cuerdas(dot)de(dot)acero(at)gmail(dot)com>, Postgresql <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Plan de ejecución de una consulta con OR |
Date: | 2008-07-14 14:51:35 |
Message-ID: | 20080714145135.GD4050@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Sebastián Villalba escribió:
> Hola Marcos.
>
> On Mon, 14 Jul 2008 10:22:07 -0400, Marcos Saldivar wrote
> > Estimados tengo la siguiente duda, para una consulta como esta:
> >
> > select * from foo where foo.permiso = 'todos' or 1950 in (select
> > miembro from miembros_grupos)
> >
> > Al cumplirse la condición "foo.permiso = 'todos'" es valido pensar
> > que la sub consulta jamas se ejecutara ????
>
> Muy válido. Saludos!
No necesariamente ... me parece que SQL no garantiza que las condiciones
se evalúan de izquierda a derecha ...
Supongo que es posible que por una cosa de rendimiento la condición que
involucra la constante sea ejecutada antes que la otra, y que el motor
se tome la libertad de eliminar el subselect. Por otro lado supongo que
si el subselect incluyera cosas como una funcion volátil, no podría hacerlo.
--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
From | Date | Subject | |
---|---|---|---|
Next Message | Marcos Saldivar | 2008-07-14 15:27:55 | Re: Plan de ejecución de una consulta con OR |
Previous Message | Sebastián Villalba | 2008-07-14 14:35:06 | Re: Plan de ejecución de una consulta con OR |