2009-07-16 74 views
0

我想存儲表中不同位置之間的距離。尋找一些聰明的SQL策略來處理查找表

CREATE TABLE `example` (
    `id` INT NOT NULL AUTO_INCREMENT , 
    `from` VARCHAR(8) NOT NULL , 
    `to` VARCHAR(8) NOT NULL , 
    `distance` DECIMAL(6, 2) NOT NULL , 
    PRIMARY KEY (`id`) , 
    INDEX (`from` , `to`) 
) 

當測量兩點之間的距離時,它被插入表中。獲得'from'和'to'之間的距離顯然非常簡單。然而'to'和'from'之間的距離完全相同。我不想再換一行來切換'到'和'從'。我也不想爲這個表做一個查找表來完成這個。

選擇距離的sql將被調用相當多,所以它需要是一個有效的查詢。

我簡化了表,所以不要擔心的地方是VARCHAR處理等

任何人有他們可以推薦的策略是什麼?

回答

4

調用地點'A'和'B'。如果A < B,則在'from'中搜索A並在'to'中搜索B,否則,搜索'from'中的B和'to'中的A。插入值時使用相同的邏輯。

這樣你只存儲每個組合一次,而且查詢速度很快。

+0

恰恰是我以後的解決方案之一 - 做得很好 – 2009-07-16 11:51:42

0

我可以提出一些完全不同的建議。每個點具有相對於同一點的座標,所以在給出兩個點時將計算距離,而不是保存在數據庫中。

現在,如果這些是maps/Graph上的點,那麼另一個解決方案就位。

+0

他沒有說這些位置有座標,也沒有說它們之間的距離是直線。如果位置是城市,距離是最快的道路旅程,它們肯定不是直線。 – 2009-07-16 12:39:57