- $sSQL .= ' FROM placex';
- $sSQL .= ' WHERE ST_DWithin('.$sPointSQL.', geometry, '.$fSearchDiam.')';
- $sSQL .= ' and rank_search != 28 and rank_search >= '.$iMaxRank;
- $sSQL .= ' and (name is not null or housenumber is not null)';
+ $sSQL .= ' FROM ';
+ if ($fSearchDiam < 0.01) {
+ $sSQL .= ' placex';
+ $sSQL .= ' WHERE ST_DWithin('.$sPointSQL.', geometry, '.$fSearchDiam.')';
+ $sSQL .= ' AND';
+ } else {
+ $sSQL .= ' (SELECT * FROM placex ';
+ $sSQL .= ' WHERE ST_DWithin('.$sPointSQL.', geometry, '.$fSearchDiam.')';
+ $sSQL .= ' LIMIT 1000) as p WHERE';
+ }
+ $sSQL .= ' rank_search != 28 and rank_search >= '.$iMaxRank;
+ $sSQL .= ' and (name is not null or housenumber is not null';
+ $sSQL .= ' or rank_search between 26 and 27)';