纬度和经度MySQL字段类型

时间:2017-01-17 14:35:57

标签: mysql geospatial

我需要将大量的纬度和经度存储在MySQL数据库中。我正在阅读有关要使用的字段类型的相互矛盾的建议。

数据的一个例子是......

Lat        |  Long
------------------------
53.670827  |  -1.093991
50.894701  |  0.061115
52.288213  |  -1.822060

根据Google的this document,他们建议字段类型为FLOAT(10,6)

我试过这个,当输入 57.098554 时,它会变为 57.098553 ,但输入 -2.252504 会正确存储。

作为替代方案,我计划使用以下内容......

Lat DECIMAL(10, 8)
Long DECIMAL(11,8)

有没有人有更好的建议,或者我是否正确使用DECIMAL设置?

2 个答案:

答案 0 :(得分:5)

两者都错了!你链接到的谷歌文件是从2009年开始,mysql从那时起已经走了很长一段路。特别是引入了JSON并在mysql 5.7中等待.... spatial data类型

自引入以来,存储位置的正确方法是作为POINT字段。这也为您开辟了一系列空间数据功能。你需要手工编写的东西,就像开发人员在介绍之前必须做的那样。

内置的地理空间函数能够使用索引,而自制函数由于无法正确使用索引而经常变慢。

答案 1 :(得分:-1)

您可以使用FLOAT( 10, 6 )

查看Google地图解决方案:Creating a Store Locator on Google Maps