性能问题...

我有一个具有地理位置数据(经度和纬度)的房屋数据库。

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

现在,我的数据库架构是

---------------------
Homes
---------------------
geolat - Float (10,6)
geolng - Float (10,6)
---------------------

我的查询是:
SELECT ...
WHERE geolat BETWEEN x1 AND x2
AND geolng BETWEEN y1 AND y2
  • 是我上面描述的最佳存储方式
    使用Float(10,6)在MySQL中查找经纬度数据并分离出经度/纬度?如果没有,那是什么?存在浮点数,小数甚至空间作为数据类型。
  • 这是执行
    从性能 Angular 看SQL?如果没有,那是什么?
  • 是否使用其他MySQL
    数据库引擎有意义吗?

  • 更新:仍未答复

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

    因此,我使用MySQL的“EXPLAIN”语句来衡量SQL的执行速度。如果对经度和纬度数据类型使用INTFLOAT,则似乎在SQL执行(结果集获取)方面绝对没有区别。

    看起来使用“BETWEEN”语句比使用“>”或“<” SQL语句快得多。使用“BETWEEN”比使用“>”和“<”语句快近三倍。

    话虽这么说,但我仍然不确定使用Spatial是否会对性能造成影响,因为我不清楚我的MySQL版本(v5.0.24)是否支持它,以及如何启用它(如果支持) 。

    任何帮助都将得到极大的返回

    最佳答案

    float(10,6)很好。

    任何其他复杂的存储方案都需要进出更多的转换,并且浮点数学运算速度很快。

    关于sql - 数据库/SQL:如何存储经度/纬度数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1370170/

    10-11 00:41
    查看更多