Что лучший способ состоит в том, чтобы запросить базу данных для записей в n милях почтового индекса?

Next i должен находиться за пределами If-End If, и вам нужно добавить Next j в ваш цикл For i, чтобы код даже работал. Кроме того, если j = 8 ваш второй цикл будет выполняться только один раз, и вы можете полностью его исключить.

было бы гораздо проще сказать

For i = 26 To 33
    If Worksheets("Calculations").Cells(i, 8) = "Yes" Or Worksheets("Calculations").Cells(i, 8) = "No Requirement" Then
        Worksheets("Calculations").Range("H33").Value = "Yes"
    Else
        Worksheets("Calculations").Range("H33").Value = "No"
    End If
Next i
6
задан Community 23 May 2017 в 12:13
поделиться

4 ответа

Я выполнил бы запрос, который возвратил все записи, заключенные в скобки в квадратном конверте, охватывающем радиальный поисковый круг (minlat <lat <maxlat и minlong <долго <maxlong), и затем выполните последующую обработку это для возврата только точек в самом кругу радиуса. (Удостоверьтесь, Ваш lat и длинные поля индексируются).

Если Вы хотели получить необычную, поддержку SQL Server пространственные индексы.

7
ответ дан 10 December 2019 в 00:45
поделиться

Я выполняю сайт, который должен выполнить этот запрос о столь же в секунду на пользователя и сюда является тем, что я изучил:

Прежде всего удостоверьтесь, что Ваша таблица местоположения имеет индексы на Lat и Lon. Вот в чем разница между 20 мс и время отклика 15, если у Вас есть миллионы записей.

Начнитесь с запросом ограничительной рамки, чтобы заставить ряд местоположений работать с. Затем вычислите расстояния на тех, вид, и если Вы являетесь суетливыми о точности, фильтруете некоторых.

Откровенно говоря, я не волновался бы о предварительных вычислениях ничего. Как я говорю, я выполняю этот тип запроса против таблицы местоположения с 6 000 000 записей, и это обычно возвращает результаты в <50 мс. В зависимости от Ваших потребностей, это действительно что-то, чтобы быть достаточно быстрым.

Удачи!

3
ответ дан 10 December 2019 в 00:45
поделиться

Необходимо посмотреть на GeoNames.org. Можно запросить theirwebservice для того, что Вы ищете, или Вы можете dl их база данных.

0
ответ дан 10 December 2019 в 00:45
поделиться

Это - на самом деле очень тяжелая проблема решить. Я рекомендовал бы сделать некоторый обман путем предварительного создания базы данных. Создайте сетку любого вида близости, необходимо найти, например, взять каждые 10 миль в каждом направлении, добавить запись в базу данных для каждой zip для того узла решетки и расстояния, и затем когда запрос входит, Вы сначала переводите точку запроса в один из Ваших узлов решетки. Теперь можно искать расстояние довольно легко.

Это решение в основном означает торговое помещение в течение времени, таким образом, можно получить довольно большую базу данных быстро. Хорошие новости: это - очень легкие данные для индексации.

0
ответ дан 10 December 2019 в 00:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: