У меня есть таблица таблиц Флористов MySQL, и я пытаюсь написать функцию поиска, которая возьмет Zipcode в качестве входа и найдет всех Флористов, которые доставляют этот почтовый индекс. Каждый флорист запись в моей таблице имеет 3 пунктовБыстрый поиск по zipcode в MySql
- геокодированных долготы (в центре по адресу цветочницы)
- геокодированной широты (в центре по адресу цветочницы)
- строки поле townnames и Почтовых индексов где флориста поставляет например - Бостон (02215, 02108, 02109), Челси (02150), Сомервилль (02143, 02144, 02145)
Допустим, я хочу, чтобы найти все флористы, которые доставляют в "02108". Каков наилучший способ реализации этого поиска в MySQL?
Я думал
Точный поиск матча - но это потребовало бы каждый поиск, чтобы сканировать всю таблицу. Неэффективное?
Haversine поиск + Четк.совп - Используйте latitutde/значение долготы, чтобы сузить поиск до радиуса в 15 миль
MySQL Great Circle Distance (Haversine formula) А затем выполнить точное совпадение в этих результатах.
Что-то еще?
Поблагодарите ваши мысли и пожелания.
У вас есть возможность добавить дочерний стол в число от 1 до многих из идентификаторов флориста и почтовых индексов? Это сделает ваш поиск намного более эффективным. – gmiley
В какой-то момент вы собираетесь прочитать полный стол, чтобы сузить результаты. Наиболее экономичным кажется «LIKE» на поле zipcode/city. 'SELECT * FROM table WHERE, например '% %''. Выполнение Haversine на все, что сузить, прежде чем делать «LIKE», - это большая часть обработки. –
JNevill
Спасибо, gmiley и JNevill за ваш быстрый ответ. Я согласен, что ребенок или стол перехода - это путь сюда. – rogerb