Re: Plan de ejecución de una consulta con OR

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

In response to

Responses

Browse pgsql-es-ayuda by date

  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