Короче говоря,
- Каким должен быть тип данных широты и долготы?
- Какую команду SQL я должен вызвать, чтобы получить первые 100 ближайших ресторанов, например?
Деталь:
У меня есть 100-килограммовая запись с широтой и долготой. Я вижу, что MySQL на самом деле поддерживает тип данных с именем point. Должен ли я использовать это вместо этого?
Поддерживает ли MySQL систему хранения KDTree http://en.wikipedia.org/wiki/File:KDTree-animation.gif
Лучше ли использовать точечный тип данных, а не обычный тип данных с плавающей точкой для хранения широты и долготы?
В конце концов я хочу найти такие вещи, как, например, первые 100 ресторанов, наиболее близкие к пунктам 105,6, и в моей базе данных много бизнесов и пунктов. Очевидно, что вычисление расстояния один за другим для каждой записи и для каждой точки будет O (n) и, следовательно, отстой.
Обратите внимание, что мне известно о более простом решении, описанном в разделе «Как сделать приложение вроде Yelp». Эффективно извлекайте информацию о расстоянии из базы данных и внедряйте ее самостоятельно для начала. Это хороший ответ.
Тем не менее, я думаю, что есть один крем ответа на урожай, который должен превзойти это право? На самом деле, сохранение местоположения на основе широты и долготы и поиск ближайшего к нему материала - очень распространенная проблема, и я ожидаю, что у mysql для этого будет специальный шаблон проектирования. Это имеет это?
Где я могу узнать больше об этом? Спасибо.