我正在 mysql 中设计一个表,它将存储用户列表和谷歌地图坐标(经度和纬度)。
我需要两个字段,还是可以用 1 个字段完成?
我不知道我用的是什么?我使用浮点数或小数或几何或有新的数据类型?选择最佳数据类型的优缺点是什么?
您可以在 mysql 中使用空间扩展,数据类型为POINT
搜索速度会更快,地理操作也有很多功能。
此博客描述了一种正确且快速的方法:
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
您可以使用:
DECIMAL(11, 8)
(小数点前 3 位和小数点后 8 位)FLOAT
请注意,十进制列可以存储精确值,而浮点列存储该值的近似值。例如1.999999
,将存储为1.999999
十进制列,但存储2.0
在浮点列中。