要存储在mysql数据库中的经度和纬度的数据类型?

时间:2012-12-13 11:05:53

标签: php mysql

我正在mysql中设计一个表,用于存储用户列表和Google Maps坐标(经度和纬度)。

我需要两个字段,还是可以用1?

完成

我不知道我用的是什么? 我使用float或decimal或GEOMETRY还是有新的数据类型?  选择最佳数据类型的优缺点是什么?

3 个答案:

答案 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