简而言之,
- 纬度和经度的数据类型应该是什么?
- 例如,我应该调用哪个SQL命令来获取前100个最近的餐馆?
详情:
我有10万张biz记录,分别包含经度和纬度。我看到MySQL实际上支持一种称为point的数据类型。我应该改用它吗?
MySQL是否支持KDTree存储系统http://en.wikipedia.org/wiki/File:KDTree-animation.gif
最好是使用点数据类型而不是常规浮点数据类型来存储纬度和经度?
最终,我想查找例如最接近点105,6的前100家餐厅,而我的数据库包含很多biz和点。显然,对每个记录和每个点一一计算距离将是O(n),因此很糟糕。
请注意,我知道如何像Yelp这样的应用程序中描述的更简单的解决方案,可以有效地从数据库检索距离信息,并且一开始也将实现我的自我。这是一个很好的答案。
但是,我认为最好的答案应该是超越该权利吗?实际上,基于纬度和经度存储位置并查找距离它最近的东西是一个非常普遍的问题,我希望mysql为此具有特殊的设计模式。有吗?
在哪里可以了解更多信息?谢谢。