相关疑难解决方法(0)

在MySQL数据库中存储纬度/经度时使用的理想数据类型是什么?

请记住,我将在lat/long对上执行计算,哪种数据类型最适合与MySQL数据库一起使用?

mysql mapping maps database-design latitude-longitude

420
推荐指数
14
解决办法
29万
查看次数

Database/SQL:如何存储经度/纬度数据?

表现问题......

我有一个拥有地理定位数据(经度和纬度)的房屋数据库.

我想要做的是找到使用InnoDB数据库引擎将位置数据存储在我的MySQL(v5.0.24a)中的最佳方法,以便我可以执行大量查询,其中我将返回所有之间的所有主记录x1和x2 latitude以及y1和y2 longitude.

现在,我的数据库架构是

---------------------
Homes   
---------------------
geolat - Float (10,6)
geolng - Float (10,6)
---------------------
Run Code Online (Sandbox Code Playgroud)

我的疑问是:

SELECT ... 
WHERE geolat BETWEEN x1 AND x2
AND geolng BETWEEN y1 AND y2
Run Code Online (Sandbox Code Playgroud)
  • 我上面描述的是使用Float(10,6)存储纬度和经度数据并分离出经度/纬度的最佳方法吗?如果不是,那是什么?存在Float,Decimal甚至Spatial作为数据类型.
  • 这是从性能角度执行SQL的最佳方法吗?如果不是,那是什么?
  • 使用不同的MySQL数据库引擎是否有意义?

更新:仍然没有答案

我在下面有3个不同的答案.一个人说要用Float.一个人说要使用INT.一个人说要使用Spatial.

所以我使用MySQL"EXPLAIN"语句来衡量SQL的执行速度.如果使用INTFLOAT用于经度和纬度数据类型,似乎绝对没有SQL执行(结果集提取)的差异.

使用" BETWEEN"语句似乎比使用" >"或" <"SQL语句要快得多.使用" BETWEEN"比使用" >"和" <"语句快近3倍.

话虽如此,我仍然不知道如果使用Spatial会对性能产生什么影响,因为我不清楚它是否支持我运行的MySQL版本(v5.0.24)......以及我如何支持它如果支持.

任何帮助都会受到极大的欢迎

mysql sql database performance sqlperformance

69
推荐指数
6
解决办法
8万
查看次数