请记住,我将在lat/long对上执行计算,哪种数据类型最适合与MySQL数据库一起使用?
表现问题......
我有一个拥有地理定位数据(经度和纬度)的房屋数据库.
我想要做的是找到使用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)
更新:仍然没有答案
我在下面有3个不同的答案.一个人说要用Float.一个人说要使用INT.一个人说要使用Spatial.
所以我使用MySQL"EXPLAIN"语句来衡量SQL的执行速度.如果使用INT或FLOAT用于经度和纬度数据类型,似乎绝对没有SQL执行(结果集提取)的差异.
使用" BETWEEN"语句似乎比使用" >"或" <"SQL语句要快得多.使用" BETWEEN"比使用" >"和" <"语句快近3倍.
话虽如此,我仍然不知道如果使用Spatial会对性能产生什么影响,因为我不清楚它是否支持我运行的MySQL版本(v5.0.24)......以及我如何支持它如果支持.
任何帮助都会受到极大的欢迎