2012-07-24 35 views
0

您好我有數據庫表struture像下面的表格 - ItemLocation索引的經度和緯度的SQL Server 2008

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欄找到新行的完美指數,這樣我就可以在項目定位和我的基礎上增加新的列這將指數可以輕鬆找到最接近的位置匹配插入? 希望它是有意義:)

+0

「親密」是一個棘手的概念,特別是如果你想保持密切的關係點。你很快就會發現自己處於NP困境。 – 2012-07-24 19:58:48

+0

那麼什麼才能最好地存儲相對密切的項目在一起? – Amrit 2012-07-24 21:08:21

+0

你不能以任何有意義的方式做到這一點。 – 2012-07-24 21:22:21

回答

1

我不知道這有一定道理。有效地使用地理類型,您需要映射到地球儀上的二維索引。如果A接近B,B接近C,則A可能接近於C或遠離C,然後我們進入旅行商問題。你的索引在哪裏開始和結束?

您可以爲您的地理類型創建空間索引。我認爲這是最好的選擇。

問題的根源在於爲什麼你認爲你需要?

+0

hmmm但讓我說我已經有數據庫中的A和B,我想添加C,所以如果A和C之間的距離小於B和C,我想按順序添加然後像A,C,B – Amrit 2012-07-24 21:05:51

+1

然後如果D與A和B等距,該怎麼辦?它在哪裏? – podiluska 2012-07-24 21:08:48