[postgis-users] View or New Table?

Kevin Neufeld kneufeld at refractions.net
Wed Apr 30 21:56:40 PDT 2008


Unfortunately, Stanley, I'm going to have to politely disagree.  If a 
view is set up to be a filter on a table (even with proper indexes in 
place), it will always be slower than looking at the same data in a 
materialized view.  At the very least, you'll have the overhead of the 
view's filter applied to every query written. 

Depending on the query, you may also get much worse results with a view 
than using a separate table.

Consider a query that is interested in the entire contents of the view's 
resultset.  (IE. SELECT count(*) FROM my_view).  In this case, if the 
view represents only a small portion of the data from much larger table, 
the query planner will most likely opt to perform an index scan, 
retrieving the rows of interest.  On the other hand, if the view were 
materialized into a table, the query planner would choose a sequential 
scan which is significantly faster than performing an index scan over 
the same dataset.

This is one of the ideas behind table inheritance - break a large table 
into smaller, quicker sub-tables by separating most often / least often 
used data.

Dylan, I would advise that you perform some timings on your most often 
used queries, comparing a view and an equivalent materialized view.  
Perhaps the incurred performance penalties is not worth your bother to 
create and maintain duplicate datasets.  But then again ...


Cheers,
Kevin



Sufficool, Stanley wrote:
> I would think this depends on your back-end storage. If you have 
> substantial backend storage, then the seek time on a view using a 
> constraint on an indexed column should be negligible.
>  
> However, if you are running a single disk, the separate 
> (non-fragmented) table _may_ be slightly faster.
>  
> This is based on no knowledge of how PostgreSQL breaks up it's table 
> spaces into file system functions. Most ORDBMS's have files for index 
> and files for data (or in MS, one huge file) which causes non-cached 
> index data to cause moderate disk thrashing on initial scans. However 
> once the index is cached, you are only looking at seek times between 
> rows/sectors in the data.
>  
> If anyone wishes to tell me that I'm talking out my ----, please do. I 
> would like to know what PG optimizes in cases like these.
>
>     -----Original Message-----
>     *From:* postgis-users-bounces at postgis.refractions.net
>     [mailto:postgis-users-bounces at postgis.refractions.net] *On Behalf
>     Of *Dylan Lorimer
>     *Sent:* Wednesday, April 30, 2008 1:54 PM
>     *To:* PostGIS Users Discussion
>     *Subject:* [postgis-users] View or New Table?
>
>     Hi,
>
>     Perhaps an obvious question, but I was wondering if there is a
>     huge speed hit when running queries against a table vs running the
>     same queries against a view of a larger table constrained to the
>     data that is pertinent.
>
>     Concrete example: millions of points all over the world, but I
>     only care about those over Africa. I could either create a new
>     table storing only those points over Africa, or I could create a
>     view on the original table that is constrained by a join on a
>     table containing the borders of the African continent.
>
>     If I have requisite indexes in place, will it still be faster to
>     use the new table instead of the view?
>     Cheers,
>     dylan
>
>     -- 
>     Dylan Lorimer | Strategic Partner Management
>     415.573.2909 (Grand Central) | 650.644.0182 (Fax)
>
>     If you received this communication by mistake, please don't
>     forward it to anyone else (it may contain confidential or
>     privileged information), please erase all copies of it, including
>     all attachments, and please let the sender know it went to the
>     wrong person. Thanks. 
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>   



More information about the postgis-users mailing list