It looks like maybe you don't have an index on your the_geom column?  If so, you might want to read the "Indexing the data" section of <a href="http://www.bostongis.com/PrinterFriendly.aspx?content_name=postgis_tut01">http://www.bostongis.com/PrinterFriendly.aspx?content_name=postgis_tut01</a><br>
<br><div class="gmail_quote">On Tue, Mar 1, 2011 at 11:40 AM, Puneet Kishor <span dir="ltr"><<a href="mailto:punk.kish@gmail.com">punk.kish@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
I have a table with ~ 13.25 million points.<br>
<br>
CREATE TABLE ll (<br>
gid serial NOT NULL,<br>
latitude double precision,<br>
longitude double precision,<br>
a integer,<br>
b integer,<br>
the_geom geometry,<br>
CONSTRAINT ll_pkey PRIMARY KEY (gid),<br>
CONSTRAINT enforce_dims_the_geom CHECK (st_ndims(the_geom) = 2),<br>
CONSTRAINT enforce_geotype_the_geom CHECK (<br>
geometrytype(the_geom) = 'POINT'::text OR the_geom IS NULL<br>
),<br>
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2163)<br>
)<br>
WITH (<br>
OIDS=FALSE<br>
);<br>
<br>
I want to select the columns a,b for the rows that lie within a box made by points [-91.048, 45.956] and [-90.973, 46.007]. Here are my results --<br>
<br>
Query 1<br>
<br>
SELECT a, b FROM ll<br>
WHERE<br>
ST_Within(<br>
ST_Point(<br>
ST_X(ST_Transform(the_geom, 4326)),<br>
ST_Y(ST_Transform(the_geom, 4326))<br>
),<br>
ST_MakeBox2D(ST_Point(-91.048, 45.956), ST_Point(-90.973, 46.007))<br>
)<br>
<br>
31 rows returned in 46125 ms<br>
<br>
Query 2<br>
<br>
SELECT a, b FROM ll<br>
WHERE<br>
ST_X(ST_Transform(the_geom, 4326)) >= -91.048 AND<br>
ST_X(ST_Transform(the_geom, 4326)) <= -90.973 AND<br>
ST_Y(ST_Transform(the_geom, 4326)) >= 45.956 AND<br>
ST_Y(ST_Transform(the_geom, 4326)) <= 46.007<br>
<br>
31 rows returned in 25729 ms<br>
<br>
Query 3<br>
<br>
SELECT a, b FROM ll<br>
WHERE<br>
longitude >= -91.048 AND<br>
longitude <= -90.973 AND<br>
latitude >= 45.956 AND<br>
latitude <= 46.007<br>
<br>
31 rows returned in 4011 ms<br>
<br>
Query 4<br>
<br>
I also have the same data in a SQLite database with an R*Tree index on lat/lon. A query analogous to Query 3 returns fast enough to not even register a time... a few milliseconds; effectively 0 seconds.<br>
<br>
What gives?<br>
--<br>
Puneet Kishor<br>
<br>
<br>
<br>
_______________________________________________<br>
postgis-users mailing list<br>
<a href="mailto:postgis-users@postgis.refractions.net">postgis-users@postgis.refractions.net</a><br>
<a href="http://postgis.refractions.net/mailman/listinfo/postgis-users" target="_blank">http://postgis.refractions.net/mailman/listinfo/postgis-users</a><br>
</blockquote></div><br>