我需要将大量的纬度和经度存储在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设置?
答案 0 :(得分:5)
两者都错了!你链接到的谷歌文件是从2009年开始,mysql从那时起已经走了很长一段路。特别是引入了JSON并在mysql 5.7中等待.... spatial data类型
自引入以来,存储位置的正确方法是作为POINT字段。这也为您开辟了一系列空间数据功能。你需要手工编写的东西,就像开发人员在介绍之前必须做的那样。
内置的地理空间函数能够使用索引,而自制函数由于无法正确使用索引而经常变慢。
答案 1 :(得分:-1)
您可以使用FLOAT( 10, 6 )
。
查看Google地图解决方案:Creating a Store Locator on Google Maps