[Mapserver-users] mappostgis query

Markus Schnider sp_ml at sourcepole.com
Mon Jul 5 07:52:58 EDT 2004


Hi all

I am perhaps in the wrong  mailing list (it should be perhaps in the developer 
mailinglist ...), but I could not run a query on a layer with more than 
2'000'000 rows. So I tried to change the code. Than I had some results, and 
the results comes faster!

mapserver 4.2 (mappostgis.c)
postgresql 7.4.2
postgis 0.8.1

Why is the following code (see below (1) ):
better than this (2)?

I've tried both versions and version (2) is faster.

(1)
-------------------------------------------------------
		if (strlen(user_srid) == 0)
		{
			sprintf(query_string_0_6,"DECLARE mycursor BINARY CURSOR FOR SELECT %s from 
%s WHERE (%s) and (%s && setSRID( %s,find_srid('','%s','%s') ))", 
columns_wanted,geom_table,layer->filter.string,geom_column,box3d,removeWhite(f_table_name),removeWhite(geom_column));
		}
		else
		{
			sprintf(query_string_0_6,"DECLARE mycursor BINARY CURSOR FOR SELECT %s from 
%s WHERE (%s) and (%s && setSRID( %s,%s) )", 
columns_wanted,geom_table,layer->filter.string,geom_column,box3d,user_srid);

		}
-------------------------------------------------------


(2)
-------------------------------------------------------
		if (strlen(user_srid) == 0)
		{
			sprintf(query_string_0_6,"DECLARE mycursor BINARY CURSOR FOR SELECT %s from 
%s WHERE (%s)",	columns_wanted,geom_table,layer->filter.string);
		}
		else
		{
			sprintf(query_string_0_6,"DECLARE mycursor BINARY CURSOR FOR SELECT %s from 
%s WHERE (%s)", columns_wanted,geom_table,layer->filter.string);

		}
-------------------------------------------------------

Thanks in advance

Markus Schnider



More information about the mapserver-users mailing list