1

我打算從存儲的所有點彼此距離的列表。如何優化SQL表,讀取速度爲點到點的距離數據

所以,如果我只有3分(A-C),它會像

| FROM | TO | DISTANCE 
| A | B | 10 miles 
| A | C | 15 miles 
| B | C | 12 miles 

很明顯,因爲你知道A到B = 10數,您可以推斷,B到A = 10英里。在我的查詢方面我可能會尋找A到B或B到A - 我不能保證旅途的起點和終點的順序。

我有1600點,這使得(1600^2 - 1600)/ 2 =1.3米可能行程。存儲數據以查詢A到B或B到A的最佳方式是什麼?

  • 我是否應該複製導致2.5m行的反向行程的行並對其進行查詢?
  • 或者我應該在兩列上創建一個複合聚簇索引 ,並且知道至少存在一個存在的情況下,搜索A到B或B到A ?
  • 還是別的什麼聰明

這是一個常見的問題,足以肯定,所以我想從DB專家知道是否有一個常見的模式或做法解決它。 我想,因爲我有很多他們自己:)事實,引用或專門知識來回答這個問題不只是含糊意見

這是SQL Azure在情況有差別

+0

您使用的是地理空間還是點更概念/上下文,你碰巧知道它們之間的距離? –

回答

2

如果我是要解決這個問題,而不是說從和到列,我把它叫做點1和點2,並始終確保點2比點1時,在你的情況C> B,B> A和C> A

希望這幫助。

+0

如果列值包含點而不是A,B,C的名字嗎? – learningNew

+0

B>一種手段,point2按字母順序來後面那個point1,如newyork> newdelhi – Sameer