[postgis-users] Odd explain analyze estimates?

strk at refractions.net strk at refractions.net
Tue Mar 8 01:13:05 PST 2005


This seems to fix the problem:

diff -U2 -r1.25 -r1.26
--- lwgeom_estimate.c   8 Mar 2005 09:23:34 -0000       1.25
+++ lwgeom_estimate.c   8 Mar 2005 09:27:23 -0000       1.26
@@ -1571,5 +1571,5 @@
        //Oid operator = PG_GETARG_OID(1);
        List *args = (List *) PG_GETARG_POINTER(2);
-       int varRelid = PG_GETARG_INT32(3);
+       //int varRelid = PG_GETARG_INT32(3);
        Oid relid;
        HeapTuple stats_tuple;

Can you check ?
--strk;

On Mon, Mar 07, 2005 at 04:42:18PM -0800, Ron Mayer wrote:
> Ron Mayer wrote:
> >strk at refractions.net wrote:
> > >>>... You can enable debugging info:
> > >>>#define DEBUG_GEOMETRY_STATS 1
> > >>>in lwgeom/lwgeom_estimate.c around line 28
> >
> >I have a version that does this now; but it sounds like Mark
> >already understands the problem.
> 
> And indeed, the extra "select * from ([myquery])" lead it to use the 
> default estimate.
> 
>    Ron
> 
> 
> fli=# explain analyze select * from (select * from t1 natural join t2 where 
> g&&'BOX3D(0 0,100 100)'::box3d) as a;
> NOTICE:  LWGEOM_gist_sel called
> NOTICE:   No statistics, returning default estimate
>                                                                                                           QUERY PLAN                                  \
> ------------------------------------------------------------------------------------------------------------------------------------------------------\
> -------------------------------------------------------------------------
>  Nested Loop  (cost=0.00..230.22 rows=1 width=46) (actual 
>  time=0.196..6028.713 rows=10000 loops=1)
>    Join Filter: ("outer".id = "inner".id)
>    ->  Seq Scan on t1  (cost=0.00..229.00 rows=1 width=46) (actual 
>    time=0.093..253.877 rows=10000 loops=1)
>          Filter: (g && '[...long geometry...]'::geometry)
>    ->  Seq Scan on t2  (cost=0.00..1.10 rows=10 width=4) (actual 
>    time=0.025..0.266 rows=10 loops=10000)
>  Total runtime: 6261.536 ms
> (6 rows)
> 
> fli=# explain analyze select * from t1 natural join t2 where g&&'BOX3D(0 
> 0,100 100)'::box3d;
> NOTICE:  LWGEOM_gist_sel called
> NOTICE:   search_box contains histogram, returning 1
> NOTICE:   returning computed value: 1.000000
>                                                                                                           QUERY PLAN                                  \
> 
> ------------------------------------------------------------------------------------------------------------------------------------------------------\
> -------------------------------------------------------------------------
>  Hash Join  (cost=1.12..380.12 rows=10000 width=46) (actual 
>  time=0.742..730.325 rows=10000 loops=1)
>    Hash Cond: ("outer".id = "inner".id)
>    ->  Seq Scan on t1  (cost=0.00..229.00 rows=10000 width=46) (actual 
>    time=0.035..251.434 rows=10000 loops=1)
>          Filter: (g && '[...long geometry...]'::geometry)
>    ->  Hash  (cost=1.10..1.10 rows=10 width=4) (actual time=0.597..0.597 
>    rows=0 loops=1)
>          ->  Seq Scan on t2  (cost=0.00..1.10 rows=10 width=4) (actual 
>          time=0.043..0.250 rows=10 loops=1)
>  Total runtime: 984.099 ms
> (7 rows)
> 
> fli=#
> _______________________________________________
> 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