Je suggérerais de limiter votre emplacement par certaines conditions qui peuvent être indexées. Vous pouvez le faire facilement car vous ne voulez probablement pas lister quelqu'un des États-Unis à quelqu'un à Paris comme emplacement le plus proche.
Avec juste une petite modification sur la requête RustamIS, vous pouvez éliminer la plupart des emplacements non pertinents.
select * from gps_location_table t
where
t.x between 20.134554 and 20.334554 and t.y between 56.11455255 and 56.31455255
order by
sqrt((t.x - 20.234554)*(t.x - 20.234554) + (t.y - 56.21455255)*(t.y - 56.21455255)
desc
Vous avez donc défini un rectangle dans lequel vous souhaitez rechercher les personnes les plus proches.