0

こんにちは私は次のテーブルのようなデータベーステーブル構造を持っています-ItemLocation

ItemId varchar(10)          ItemGeo (geography)
123n13                      POINT (-79.660470500000017 43.5482682)
n4f923                      POINT (-79.7511776 43.6575816)

およびその他の行......................。

そして、私は今、単純な挿入を使用してデータを挿入していますが、実際には、近くにあるアイテムがデータベースに一緒にとどまるように、場所ごとに行を挿入したいので、新しいアイテム「q3eqwe2」を挿入しようとすると、 123n13に近いため、123n13の隣に移動し、n4f923インデックスを置き換え、下のすべての行をインデックス+ 1に移動します。これは実行可能ですか?

ItemId varchar(10)          ItemGeo (geography)
    123n13                      POINT (-79.660470500000017 43.5482682)
    q3eqwe2                     POINT (-79.66039911221 43.5479121)
    n4f923                      POINT (-79.7511776 43.6575816)

可能であれば、ItemGeo列をチェックするすべての行を調べて、新しい行の完全なインデックスを見つけたくないので、アイテムの場所に基づいてインデックスを作成する新しい列を追加できます。最も近い場所の一致を簡単に見つけることができます。挿入しますか?それが理にかなっていることを願っています:)

4

1 に答える 1

1

それが理にかなっているのかどうかはわかりません。事実上、geography タイプを使用すると、地球上にマップされた 2 次元のインデックスが求められます。A が B に近く、B が C に近い場合、A は C に近く、または C から遠く離れている可能性があり、その場合は巡回セールスマンの問題になります。あなたのインデックスはどこから始まりどこで終わりますか?

地理タイプで空間インデックスを作成できます。それが最良の選択肢だと思います。

質問の根本は、なぜそうする必要があると思いますか?

于 2012-07-24T19:59:52.023 に答える