0

いくつかのPOIを格納するテーブルがあるため、ID、名前、緯度、経度が含まれています。問題は、データベースに同じ座標を持つPOIを2回入れたくないということです。私が考えた可能性は次のとおりです。

  • 緯度と経度の組み合わせとして主キーを作成します...しかし、それらはfloatであるため、お勧めできません
  • 列 INT(16) を作成します (緯度からの 8 つの数値と経度からの 8 つの数値をマージします) が、データを複製するようなものであり、多くのスペースを占有します。
  • 緯度と経度からいくつかのハッシュを作成し、それを主キーとして設定しますが、それも大きな数値になるのではないかと心配しています

どうすれば、db のスペースをあまり占有しないのでしょうか?

4

1 に答える 1

0

経度と緯度は、それぞれに 1e7 (1000 万) を掛けることで 4 バイトの整数に変換できます。これは、必要なすべての精度 (3cm) を与える整数です。

次に、これら 2 つの 4 バイト整数を 1 つの 8 バイト長に結合します。

データベースが long をサポートしているかどうかはわかりませんが、おそらくサポートしています。

于 2013-10-04T16:37:15.040 に答える