Thread: View columns calculated

View columns calculated

From
"Peter Darley"
Date:
Folks,
    I have a question about views:  I want to have a fairly wide view (lots of
columns) where most of the columns have some heavyish calculations in them,
but I'm concerned that it will have to calculate every column even when I'm
not selecting them.  So, the question is, if I have 5 columns in a view but
only select 1 column, is the system smart enough to not calculate the unused
columns, or am I taking a performance hit over a smaller view that doesn't
have the extra 4 columns?
Thanks,
Peter Darley


Re: View columns calculated

From
Tom Lane
Date:
"Peter Darley" <pdarley@kinesis-cem.com> writes:
>     I have a question about views:  I want to have a fairly wide view (lots of
> columns) where most of the columns have some heavyish calculations in them,
> but I'm concerned that it will have to calculate every column even when I'm
> not selecting them.  So, the question is, if I have 5 columns in a view but
> only select 1 column, is the system smart enough to not calculate the unused
> columns,

It depends on what the rest of your view looks like.  If the view is
simple enough to be "flattened" into the parent query then the unused
columns will disappear into the ether.  If it's not flattenable then
they will get evaluated.  You can check by seeing whether an EXPLAIN
shows a separate "subquery scan" node corresponding to the view.
(Without bothering to look at the code, an unflattenable view is one
that uses GROUP BY, DISTINCT, aggregates, ORDER BY, LIMIT, UNION,
INTERSECT, EXCEPT, probably a couple other things.)

            regards, tom lane

Re: View columns calculated

From
Enrico Weigelt
Date:
* Tom Lane <tgl@sss.pgh.pa.us> wrote:
> "Peter Darley" <pdarley@kinesis-cem.com> writes:
> >     I have a question about views:  I want to have a fairly wide view (lots of
> > columns) where most of the columns have some heavyish calculations in them,
> > but I'm concerned that it will have to calculate every column even when I'm
> > not selecting them.  So, the question is, if I have 5 columns in a view but
> > only select 1 column, is the system smart enough to not calculate the unused
> > columns,
>
> It depends on what the rest of your view looks like.  If the view is
> simple enough to be "flattened" into the parent query then the unused
> columns will disappear into the ether.  If it's not flattenable then
> they will get evaluated.  You can check by seeing whether an EXPLAIN
> shows a separate "subquery scan" node corresponding to the view.
> (Without bothering to look at the code, an unflattenable view is one
> that uses GROUP BY, DISTINCT, aggregates, ORDER BY, LIMIT, UNION,
> INTERSECT, EXCEPT, probably a couple other things.)

What about functions ?
I'm using several (immutable) functions for mapping IDs to names, etc.


cu
--
---------------------------------------------------------------------
 Enrico Weigelt    ==   metux IT service

  phone:     +49 36207 519931         www:       http://www.metux.de/
  fax:       +49 36207 519932         email:     contact@metux.de
  cellphone: +49 174 7066481
---------------------------------------------------------------------
 -- DSL ab 0 Euro. -- statische IP -- UUCP -- Hosting -- Webshops --
---------------------------------------------------------------------