Я пытаюсь выяснить, что было бы наиболее эффективным (по отношению к времени загрузки), чтобы сравнить расстояние между одним почтовым индексом (которое пользователь предоставляет) и целую кучу других почтовых индексов (сейчас около 200 почтовых индексов , но его предмет увеличивается со временем). Мне не нужно ничего точно в парке.
Я загрузил zs-код csv-файла для всех США, и у меня есть функция, которая создает расстояние между двумя почтовыми индексами (в радианах, на которые я верю.) Мне не нужно отображать расстояние, которое мне нужно просто отсортировать 200 почтовых индексов, причем ближайший из них является первым из результатов.
Я загрузил файл csv в таблицу mysql. Я думал, что могу перебирать все 200 почтовых индексов и обновлять поле для каждого из них, содержащего расстояние. Затем, используя ORDER BY, сортируйте их от ближайшего до самого дальнего.
Кто-нибудь знает более эффективный способ сделать это? Этот способ потребовал бы обновления всего db почтовых индексов каждый раз, когда выполняется поисковый запрос. Только с 200 почтовыми индексами это не так уж и сложно, но я думаю, что это замедлит время загрузки по мере создания db. Спасибо заранее за любой совет, его очень ценят!
В Javascript:
var R = 6371; // km var dLat = (lat2-lat1).toRad(); var dLon = (lon2-lon1).toRad(); var a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * Math.sin(dLon/2) * Math.sin(dLon/2); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); var d = R * c;
где d = расстояние между двумя точками
Это формула Хаверсина .