Erik,

I don't know why european_waters would be a single complex polygon?
Do you mean it is a MULTIPOLYGON in Postgis? If so, it is easy to
break it apart in single polygons. If it includes rivers, I can't imagine why it
is a polygon in the first place. I would expect a LINESTRING (or
MULTILINESTRING in your case).

This explains, of course, why performance is not much improved. The &&
operation does not really affect that.

GL



danny wrote:
Thanks Guido!

The sample you gave performed slightly better: 304 seconds. I'll still have to wait a few months to let it run on all my data though. Yes, sitecode has a "normal" index, not a spatial one. Both the_geom's have spatial ones.
The european_waters polygon is one single complex polygon, scale 1/100000.
What's annoying is that when I do an intersect in Arc View it's almost instantaneous. Of course I don't get exaclty what I wan't but with some tweaking I can maybe get closer. That would be a great disappointment though. I was really looking forward to using ST_Within intensively!

Thanks Jean David, no performance gain though by using it in the WHERE clause, where I intended to use it in the first place. I put it in the Select for testing purposes.

explain select  sitecode from sites a,  europe_waters b
where st_intersects(a.the_geom,b.the_geom) and a.sitecode = 'xxxx';

"Nested Loop  (cost=0.00..461.71 rows=1 width=10)"
"  Join Filter: _st_intersects(a.the_geom, b.the_geom)"
"  ->  Seq Scan on sites a  (cost=0.00..453.43 rows=1 width=35764)"
"        Filter: ((sitecode)::text = 'xxxx'::text)"
" -> Index Scan using idx_europe_waters on europe_waters b (cost=0.00..8.27 rows=1 width=32)"
"        Index Cond: (a.the_geom && b.the_geom)"
"        Filter: (a.the_geom && b.the_geom)"



On Tue, Aug 5, 2008 at 10:53 AM, Guido Lemoine <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:

    Erik

    Try this, and see if it is any faster:

    select  st_intersects(a.the_geom,b.the_geom) from sites a,
     europe_waters b where a.the_geom && b.the_geom and
    a.sitecode = 'xxxx';

    I guess you mean that sitecode is indexed (not spatially indexed),
    because it seems to be a varchar.
    Both a and b should have a spatial index on the_geom, but I reckon
    that is already the case. Also,
    b (europe_layer) should not be a single polygon, but rather a set
    of polygons.

    This is lesson 1 in the PostGIS tutorial, more or less. In return
    for my 2 minutes effort, you are
    obliged to report the new performance report, so that future users
    will benefit.
    After all, I just saved you half a year...

    GL



    danny wrote:

        Hello,

        I'm wondering if it's normal to have a 420 second response
        time for the following query.
        A spatial index has been set on the spatial field (the_geom)
        and other important fields (like sitecode). I've generously
        tweaked the memory options for postgresql.
        With such a response time I would have to let my query run for
        half a year before getting the answer I'm interested in! :)

        Anybody know how I can boost up the process or is it doomed to
        always be so slow? The europe_layer is indeed a complex
        polygon....

        select  st_intersects(a.the_geom,b.the_geom) from sites a,
         europe_waters b where a.sitecode = 'xxxx';

        "Nested Loop  (cost=0.00..496.18 rows=1310 width=35786)"
        "  ->  Seq Scan on sites a  (cost=0.00..453.43 rows=1
        width=35754)"
        "        Filter: ((sitecode)::text = 'xxxx'::text)"
        "  ->  Seq Scan on europe_waters b  (cost=0.00..23.10
        rows=1310 width=32)"

        My true objective would be to join thses two tables through an
        st_intersects but for the time it is unconceivable.
        Many thanks,

        Erik
        ------------------------------------------------------------------------

        _______________________________________________
        postgis-users mailing list
        [email protected]
        <mailto:[email protected]>
        http://postgis.refractions.net/mailman/listinfo/postgis-users

-- ----------------------------------------------------------------
    Guido Lemoine
    Joint Research Centre, European Commission
    Institute for the Protection and Security of the Citizen (IPSC)
    Support to External Security
    Via E. Fermi, 2749 TP 267 Ispra 21027 (VA), Italy
    Tel. +39 0332 786239 (direct line) Fax. +39 0332 785154
    WWW: http://ses.jrc.it
    ----------------------------------------------------------------
    Disclaimer:
    Views expressed are those of the individual and do not represent
    the views of the European Commission


    _______________________________________________
    postgis-users mailing list
    [email protected]
    <mailto:[email protected]>
    http://postgis.refractions.net/mailman/listinfo/postgis-users


------------------------------------------------------------------------

_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users

--
----------------------------------------------------------------
Guido Lemoine
Joint Research Centre, European Commission
Institute for the Protection and Security of the Citizen (IPSC)
Support to External Security
Via E. Fermi, 2749 TP 267 Ispra 21027 (VA), Italy
Tel. +39 0332 786239 (direct line) Fax. +39 0332 785154
WWW: http://ses.jrc.it
----------------------------------------------------------------
Disclaimer:
Views expressed are those of the individual and do not represent the views of the European Commission


_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to