Re: Consultas sobre vistas

From: Jaime Casanova <systemguards(at)gmail(dot)com>
To: Conrado Blasetti <conrado(at)mapfre(dot)com(dot)ar>, "Ing(dot) Jhon Carrillo // Caracas, Venezuela" <jhon(dot)carrillo(dot)foros(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Consultas sobre vistas
Date: 2005-12-02 22:33:40
Message-ID: c2d9e70e0512021433s9ce88d3yaf8c8f47f4ba12@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On 12/2/05, Alvaro Herrera <alvherre(at)commandprompt(dot)com> wrote:
> Conrado Blasetti escribió:
> > Mi Gran Amigo entra por seq scan, la consulta va orientada mas a la teoría
> > de las vistas. Tengo pocos registros y una teoría sería que al haber pocos
> > registros en las tablas (menos de 100 en todas las tablas), y otra que entre
> > full a todas para luego filtrar mediante el where de la vista (aunque no
> > creo esto ultimo)
>
> Con respecto a la teoria: se puede hacer push-down de condiciones desde una
> consulta externa hacia "adentro de la definicion de la vista". Hay
> muchas limitaciones con respecto a las situaciones donde este pushdown
> puede hacerse.
>
> Es posible que funcione en tu caso, pero no se. Haz una tabla grande y
> prueba.
>
> El codigo relevante parece ser este (src/backend/optimizer/path/allpaths.c)
>
>

Yo siempre he creido que el codigo relevante esta en:
src/backend/optimizer/prep/prepjointree.c

/*
* pull_up_subqueries
* Look for subqueries in the rangetable that can be pulled up into
* the parent query. If the subquery has no special features like
* grouping/aggregation then we can merge it into the parent's jointree.
*
* below_outer_join is true if this jointree node is within the nullable
* side of an outer join. This restricts what we can do.
*
* A tricky aspect of this code is that if we pull up a subquery we have
* to replace Vars that reference the subquery's outputs throughout the
* parent query, including quals attached to jointree nodes above the one
* we are currently processing! We handle this by being careful not to
* change the jointree structure while recursing: no nodes other than
* subquery RangeTblRef entries will be replaced. Also, we can't turn
* ResolveNew loose on the whole jointree, because it'll return a mutated
* copy of the tree; we have to invoke it just on the quals, instead.
*/
Node *
pull_up_subqueries(Query *parse, Node *jtnode, bool below_outer_join)

--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Francisco Reyes 2005-12-02 23:00:53 Re: 15,000 tables
Previous Message Alvaro Herrera 2005-12-02 22:08:58 Re: Consultas sobre vistas