The simplified scene: select slowfunction() from a order by b limit 1 is slow than select slowfunction() from ( select * from a order by b limit 1) if there are many records in table 'a'
The real scene: function ST_Distance_Sphere is slow than ST_Distance, the query: SELECT ST_Distance_Sphere(s, ST_GeomFromText('POINT(1 1)')) from road order by ST_Distance(s, ST_GeomFromText('POINT(1 1)')) limit 1 is slow than: select ST_Distance_Sphere(s, ST_GeomFromText('POINT(1 1)')) from (SELECT s from road order by ST_Distance(s, ST_GeomFromText('POINT(1 1)')) limit 1) as a There are about 7000 records in 'road'. -- Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-performance