Вы должны построить таблицу, в которой каждый почтовый индекс связан с широтой и долготой.Когда кто-то вводит почтовый индекс и расстояние, вы вычисляете диапазон широт и долгот, которые попадают в него, а затем выбираете все почтовые индексы, которые попадают в эту ограничивающую рамку.Затем вы выбираете любые магазины, у которых есть почтовые индексы в этом наборе, и вычисляете их расстояние от предоставленного почтового индекса и сортируете его.(Используйте формулу haversine для расчета расстояния между точками на земном шаре)
Если ваша основная задача - скорость, вы можете предварительно рассчитать все расстояния.Иметь таблицу, которая содержит столбец почтового индекса магазина, другой почтовый индекс и столбец расстояния.Вы можете ограничить другие почтовые индексы почтовыми индексами на определенном расстоянии (скажем, 100 миль или что у вас есть), если вам нужно сократить количество строк.Если вы не ограничите ссылки на основе расстояния, у вас будет таблица с> 700 миллионами строк, но вы, безусловно, сможете быстро выполнить поиск.