Если вы сохраняете все расстояния между всеми вашими пользователями во время регистрации, вы обнаружите, что очень быстро сохраните большой объем данных - для 100 пользователей, ~ 5000 фрагментов данных. Для 1000 пользователей ~ 500 000 (с соответствующими расчетами, необходимыми для каждого) - плюс, если пользователь меняет свое местоположение, эти данные немедленно становятся избыточными, что требует пересчета для всех пользователей. Опять же, огромная проблема с большим количеством пользователей.
Вам, вероятно, было бы лучше делать это на лету - MySQL предлагает пространственные расширения, которые вы можете использовать для оптимизации поиска по местоположению (см. http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html)
Очень простой пример использования этих расширений можно найти по адресу http://maisonbisson.com/blog/post/12147/working-with-spatial-data-in-mysql/ - более сложные примеры должны позволять вам возвращать все точки в радиусе r.
Кто-то еще упомянул вычисление этого на стороне клиента с использованием Javascript. Конечно, есть возможность, но еще раз подумайте, если у вас большое количество пользователей, скажем, 10 000 - вам сначала нужно будет передать все эти данные клиенту (что приведет к задержке при получении HTTP), а затем предположить, что они обладают достаточно мощным Процессор для выполнения расчетов (что если кто-то смотрит на ваш сайт на старом смартфоне?). Вы можете остановить их браузер на несколько секунд, пока идет процесс.