坐标为主键

时间:2013-10-04 11:08:17

标签: mysql sql floating-point coordinates

我有一个存储一些POI的表,因此它有一些id,名称,纬度和经度。问题是,我不希望两次在数据库中具有相同坐标的POI。我想到的可能性是:

  • 将主键设为纬度和经度的组合......但它们是浮点数,所以这不是一个好主意
  • 创建列INT(16)(来自纬度的8个数字和经度合并在一起的8个数字),但它就像复制数据一样,它会占用大量空间
  • 从纬度和经度做一些哈希,并将其设置为主键,但我担心它也会是大数字

怎么可能这样做,所以它不会在db中占用太多空间?

1 个答案:

答案 0 :(得分:0)

经度和纬度每个都可以通过将每个乘以1e7(一千万)转换为4字节整数。 这是一个整数,给出你需要的所有精度(3厘米)。

现在将这两个4字节整数合并为一个8字节长。

我不确定数据库是否支持很长时间,可能是的。