绩效问题。
我有一个房子的数据库,有地理位置数据(经度和纬度)。
我想要做的是找到最好的方法,使用 InnoDB 数据库引擎在我的 MySQL (v5.0.24 a)中存储位置数据,这样我就可以执行大量查询,返回所有在 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
。一个人说用 INT
。一个人说用 Spatial
。
因此,我使用 MySQL“ EXPLAIN”语句来测量 SQL 的执行速度。如果对经纬度数据类型使用 INT
或 FLOAT
,那么 SQL 执行(结果集获取)似乎完全不存在差异。.
使用“ BETWEEN
”语句似乎也比使用“ >
”或“ <
”SQL 语句快。使用“ BETWEEN
”比使用“ >
”和“ <
”语句快近3倍。
尽管如此,我仍然不确定如果使用 Space 会对性能产生什么影响,因为我不清楚我的 MySQL 版本(v5.0.24)是否支持它... ... 以及如果支持它,我如何启用它。
如能提供任何帮助,我将不胜感激