我正在mysql中设计一个表,用于存储用户列表和Google Maps坐标(经度和纬度)。
我需要两个字段,还是可以用1?
完成我不知道我用的是什么? 我使用float或decimal或GEOMETRY还是有新的数据类型? 选择最佳数据类型的优缺点是什么?
答案 0 :(得分:5)
您可以在mysql中使用spatial extensions 数据类型为POINT
搜索速度更快,地理操作功能更多。
答案 1 :(得分:3)
在这篇博客中描述了一种正确的方法,而且很快:
http://www.rooftopsolutions.nl/blog/229
CREATE TABLE geo (
longitude DOUBLE,
latitude DOUBLE,
idxlong SMALLINT,
idxlat SMALLINT,
INDEX (idxlong,idxlat);
);
第2部分包含一个基准:http://www.rooftopsolutions.nl/blog/230
method small medium large
plain select 1.73s
index on latitude 0.72s
using point field 9.52s
using point field + spatial index 0.00s 0.73s 18.82s
using morton number 0.78s
index on morton 0.00s 0.65s 3.23s
同样是实践中的第3部分:http://www.rooftopsolutions.nl/blog/231
答案 2 :(得分:2)
您可以使用:
DECIMAL(11, 8)
(前3位数字和小数点后8位数字)FLOAT
请注意,十进制列可以存储精确值,其中float列存储值的近似值。例如,1.999999
将在{10}列中存储为1.999999
,但在float列中将存储为2.0
。