В базах создаются специальные структуры данных и индексы к ним, которые позволяют эффективно выполнять запросы вида "какие объекты находятся на расстоянии не более R от точки (X,Y)?". Например, если для упрощения вместо круга взять квадрат, хорошо работает
R-Tree. Реализация для
SQLite.
Более серьезное решение для PostgreSQL:
postgis.refractions.net
Что касается постоянного перемещения машин, можно делать так. Запросить машины в меньшем радиусе, которые точно не уедут далеко в ближайшее время. Если ничего не нашлось, тогда увеличить радиус поиска.