The following statements do not utilize an index when executed inside a
plpgsql procedure, but does when executed interactively in psql!

Does not use index:

FOR somemorerows IN 
 SELECT zipcode_list 
 FROM pa_zipcode_proximity
 WHERE zipcode = zipcode_in
 AND proximity <= proximity_range_in
LOOP
 zipcodes := zipcodes || '','' || somemorerows.zipcode_list;
END LOOP;

However:
 SELECT zipcode_list 
 FROM pa_zipcode_proximity
 WHERE zipcode = zipcode_in
 AND proximity <= proximity_range_in;

Does use the index!  zipcode_list and zipcode are text, proximity is an
integer.  There is a primary key on zipcode and proximity.  We are using
PostgreSQL 7.3 on i686-pc-linux-gnu, compiled by GCC 2.96.  Any ideas? 
We have recently done a vacuum full and analyze.

Any help is much appreciated!

-r

-- 
Ryan Mahoney
ryan@flowlabs.com
(718)721-8790

"Tomorrow's Company. Today's Budget."
				http://www.flowlabs.com


20 Dec 2002 17:35:19 -0500
Ryan Mahoney <ryan@flowlabs.com>
plpgsql and index usage