postgis table joins in layer DATA and FILTER

David Niergarth dn at HDDESIGN.COM
Fri Nov 30 13:36:35 PST 2007


I'm wondering if there is a way to join two postgres tables within a layer object.

We have a postgres table with a postgis geometry column and other details 
(name, address columns). Problem is, we need to join that table with a couple 
of other tables in the same database.

We have tried getting around the join problem by creating a view that hides the 
needed joins but performance is terrible. We have also tried using an exists 
subselect but performance is even worse. Creating a custom table for each map 
we want to generate is completely impractical due to the size of the database.

However, writing sql as joins is super quick.

Here's an example of what we'd like to accomplish.

DATA "p.the_geom from people_points p, spam_table s, eggs_table e"
FILTER "p.id=s.id and p.id=e.id and s.spam='foo' and e.eggs='bar'"

Is there some other way to do this without having to create a (massive and 
unnormalized) table with all the info we need or a view?

We're using postgres 8.1, mapserver 4.9, ubuntu server 7.04. We've heard there 
were improvements to postgres (maybe in 8.2) that improved view performance, 
but it's not practical for us to upgrade right now.

Any info or suggestions welcome,

--David Niergarth



More information about the MapServer-users mailing list