数据库/ SQL:如何存储经度/纬度数据?
性能问题... 我有一个具有地理位置数据(经度和纬度)的房屋数据库。 我想做的就是找到使用InnoDB数据库引擎将位置数据存储在MySQL(v5.0.24a)中的最佳方法,这样我就可以执行很多查询,以返回介于两者之间的所有主记录。 x1和x2latitude以及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中存储经度和纬度数据并分离出经度/纬度的最佳方法吗?如果没有,那是什么?存在浮点数,小数甚至空间作为数据类型。 从性能的角度来看,这是执行SQL的最佳方法吗?如果没有,那是什么? 使用其他MySQL数据库引擎有意义吗? 更新:仍然没有答案 我在下面有3个不同的答案。一个人说要用Float。一个人说要用INT。一个人说要用Spatial。 因此,我使用MySQL的“ EXPLAIN”语句来衡量SQL的执行速度。如果对经度和纬度数据类型使用INT或FLOAT,则似乎在SQL执行(结果集获取)方面绝对没有区别。 看起来使用“ BETWEEN”语句比使用“ >”或“ <” SQL语句快得多。使用“ BETWEEN”比使用“ >”和“ <”语句快将近3倍。 话虽如此,我仍然不确定使用Spatial会对性能产生什么影响,因为我不清楚我的MySQL版本(v5.0.24)是否支持它,以及如何启用它(如果支持) 。 …