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

From: "Mauro A(dot) Morales M(dot)" <mmorales(at)opencorp(dot)cl>
To: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
Cc: Sebastián Villalba <sebastian(at)fcm(dot)unc(dot)edu(dot)ar>, 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-15 03:40:32
Message-ID: 1216093232.3162.7.camel@sherlock
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El lun, 14-07-2008 a las 10:51 -0400, Alvaro Herrera escribió:
> 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.

Pero acaso el explain no entrega pistas acerca de como resuelve la
consulta ?.
Si no recuerdo mal, las SQL se leen de abajo hacia arriba y de izquierda
a derecha.

Saludos,

-- Mauro

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2008-07-15 04:34:32 Re: Plan de ejecución de una consulta con OR
Previous Message Hugo César 2008-07-15 01:40:34 Re: Hora del Servidor